百度网盘非会员限制转存数量500的解决办法:脚本自动选择|无需安装|不使用第三方工具|全平台可用
百度网盘批量转存技巧:解决非会员500文件限制问题 摘要:百度网盘非VIP会员转存和上传均限制500个文件。针对不同场景提供解决方案:(1)源码类项目建议下载后重新上传,小文件下载速度可能突破限速;(2)相机照片等规律命名文件提供JS脚本批量选择工具,可自定义范围自动勾选;(3)懒人模式支持按批次处理文件,每次处理500个。脚本需在Chrome控制台执行,自动取消非当前批次勾选,处理完成后显示操作
问题
今天整理清理百度账号的小号时,遇到一个问题:将百度小号的文件转存到主账号时,提示:超过转存限制数量,需要开通VIP会员继续。查了下说明,非会员限制为500个。
不过,之后又遇到问题:上传也限制了500个的数量(是的,我才发现,也不知道是啥时候变得这么坑爹了!)。这下,以后新上传的文件再也不用担心遇到转存超标问题了,因为你根本也上传不上去了!🐶
BTW,百度网盘的下载速度,决定了它冷备份的作用身份,所以,确实是应该采用压缩上传的方式。(就好像工业数据备份使用磁带一个道理,不需要支持随机访问数据)
PS,关于网盘的场景选择使用,可以详见这里详述:免费网盘如何选择,不再赘述。
项目源码类
推荐:直接使用客户端下载后,再重新上传网盘。
这种具体多小文件、且多级目录没有规律的场景,不适合脚本处理,实际上转存的速度也很慢!(对,你没看错,百度网盘的转存时间随着文件增多而急剧上升,众多小文件的情况下,真不如下载上传快!)
下载小文件还有个好处是:文件的实际下载速度会明显高于限速,根据文件大小而异,实际表现可能是限速的好多倍。其原因倒也不稀奇:因为限速是使用了标准时间内的下载量来决定,而小文件很快下完了,开始下载下一个存在一个结束和启动的冷处理间隔,这个冷处理间隔是没有速度的,所以,看上去的效果就是下载文件的过程中,速度会突破限速。
标准场景:相机照片目录
该标准场景的特点是:文件居多,每个文件还巨大,文件命名有规律。
使用如下脚本自动选择后再手动点击转存,使用方法见脚本内注释:
// ===== 百度网盘文件批量选择工具 =====
// 在Chrome控制台执行此代码,将自动选中指定范围的文件
// 使用方法:
// 0. 准备工作:将函数默认值改为自己所需要的形式(也是初次执行的参数)
// 1. 打开百度网盘页面,下滑到底,显示所有条目!!!(注意,页面是懒加载技术,不下滑到底,后面的元素不可见也不可脚本选中!!)
// 2. 按F12打开开发者工具
// 3. 切换到Console标签页
// 4. 粘贴此代码并按Enter执行,会立刻执行一次默认参数的处理!!
// 5. 之后可以多次调用 selectFilesByRange() 函数并传入不同参数
//
//
// 注意事项:
// 1. 百度网盘非VIP会员限制每次转存500个文件,从1000-1500是501个,记得头或尾去掉一个。
// 2. 该函数会自动取消勾选非范围内的条目,所以,连续执行该函数输入自己需要勾选条目范围即可,它会自动取消上次勾选的项。
// 3. 循环对每个条目模拟点击来选择,不是瞬间完成,数量越多越慢。提示“开始处理文件: xxxx”时,耐心等待即可,一般是秒级完成。
// 4. 处理完毕后会打印:{added: xxx, removed: yyy}(往上翻也有中文提示),核对勾选和取消勾选数量是否正确。
function selectFilesByRange(startNum = 1000, endNum = 1499, prefix = "照片 ", suffix = ".jpg") {
// 验证输入
if (typeof prefix !== 'string' || typeof suffix !== 'string') {
console.error("错误:prefix 和 suffix 必须是字符串");
return { added: 0, removed: 0 };
}
if (isNaN(startNum) || isNaN(endNum)) {
console.error("错误:startNum 和 endNum 必须是数字");
return { added: 0, removed: 0 };
}
if (startNum > endNum) {
console.error("错误:起始编号不能大于结束编号");
return { added: 0, removed: 0 };
}
console.log(`开始处理文件: ${prefix}[${startNum}-${endNum}]${suffix}`);
const fileItems = document.querySelectorAll('dd.AuPKyz');
let addedCount = 0; // 新选中的文件数
let removedCount = 0; // 取消选中的文件数
// 创建正则表达式
const regex = new RegExp(`^${prefix}(\\d+)${suffix}$`);
fileItems.forEach(item => {
const fileNameElement = item.querySelector('.filename');
if (!fileNameElement) return;
const fileName = fileNameElement.title || fileNameElement.textContent;
const match = fileName.match(regex);
const isSelected = item.classList.contains('JS-item-active');
const checkbox = item.querySelector('span.EOGexf');
if (!checkbox) return;
// 触发点击事件的函数
const clickCheckbox = () => {
const event = new MouseEvent('click', {
view: window,
bubbles: true,
cancelable: true
});
checkbox.dispatchEvent(event);
};
if (match) {
const fileNumber = parseInt(match[1], 10);
if (!isNaN(fileNumber) && fileNumber >= startNum && fileNumber <= endNum) {
// 符合范围且未选中的文件,将其选中
if (!isSelected) {
clickCheckbox();
addedCount++;
}
} else if (isSelected) {
// 符合命名但不在范围内的文件,取消选中
clickCheckbox();
removedCount++;
}
} else if (isSelected) {
// 不符合命名的文件,但当前已选中的,取消选中
clickCheckbox();
removedCount++;
}
});
console.log(`操作完成:\n - 新选中: ${addedCount} 个文件\n - 取消选中: ${removedCount} 个文件`);
console.log(`匹配范围: "${prefix}[${startNum}-${endNum}]${suffix}"`);
return { added: addedCount, removed: removedCount };
}
// 粘贴后立即执行一次当前默认参数的处理
selectFilesByRange();
// 示例调用
// selectFilesByRange(1000, 1499);
// selectFilesByRange(500, 799, "图片", ".png");
其他场景和懒人模式
使用如下脚本按照数量进行依次处理,其间不要改变排序顺序:
// ===== 百度网盘文件批量选择工具 =====
// 在Chrome控制台执行此代码,将自动选中指定范围的文件
// 使用方法:
// 0. 准备工作:将函数默认值改为自己所需要的形式(也是初次执行的参数)
// 1. 打开百度网盘页面,下滑到底,显示所有条目!!!(注意,页面是懒加载技术,不下滑到底,后面的元素不可见也不可脚本选中!!)
// 2. 按F12打开开发者工具
// 3. 切换到Console标签页
// 4. 粘贴此代码并按Enter执行,会立刻执行一次默认参数的处理!!
// 5. 之后可以多次调用 selectBatch() 函数并传入接下来的批次
//
// 参数说明:
// batchIndex - 批次号(从1开始)
// batchSize - 每个批次处理的文件数(默认500)
//
// 注意事项:
// 1. 百度网盘非VIP会员限制每次转存500个文件,默认不需要改动batchSize参数。
// 2. 该函数会自动取消勾选非范围内的条目,所以,连续执行该函数输入自己需要勾选条目范围即可,它会自动取消上次勾选的项。
// 3. 循环对每个条目模拟点击来选择,不是瞬间完成,数量越多越慢。提示“开始处理第x批文件”时,耐心等待即可,一般是秒级完成。
// 4. 处理完毕后会打印【后续处理建议】,根据提示继续输入命令执行即可。
function selectBatch(batchIndex = 1, batchSize = 500) {
// 验证输入
if (isNaN(batchIndex) || isNaN(batchSize)) {
console.error("错误:batchIndex 和 batchSize 必须是数字");
return { added: 0, removed: 0 };
}
if (batchIndex < 1) {
console.error("错误:批次号必须从1开始");
return { added: 0, removed: 0 };
}
if (batchSize < 1) {
console.error("错误:每批数量必须至少为1");
return { added: 0, removed: 0 };
}
const startIndex = (batchIndex - 1) * batchSize;
const endIndex = startIndex + batchSize - 1;
console.log(`开始处理第${batchIndex}批文件 (序号${startIndex + 1}-${endIndex + 1}, 共${batchSize}个)`);
const fileItems = document.querySelectorAll('dd.AuPKyz');
const totalItems = fileItems.length;
let addedCount = 0; // 新选中的文件数
let removedCount = 0; // 取消选中的文件数
fileItems.forEach((item, index) => {
const isSelected = item.classList.contains('JS-item-active');
const checkbox = item.querySelector('span.EOGexf');
if (!checkbox) return;
// 触发点击事件的函数
const clickCheckbox = () => {
const event = new MouseEvent('click', {
view: window,
bubbles: true,
cancelable: true
});
checkbox.dispatchEvent(event);
};
if (index >= startIndex && index <= endIndex) {
// 当前批次范围且未选中的文件,将其选中
if (!isSelected) {
clickCheckbox();
addedCount++;
}
} else if (isSelected) {
// 不在当前批次范围但已选中的文件,取消选中
clickCheckbox();
removedCount++;
}
});
console.log(`操作完成:\n - 新选中: ${addedCount} 个文件\n - 取消选中: ${removedCount} 个文件`);
console.log(`处理范围: 页面顺序中的第${startIndex + 1}到${endIndex + 1}个文件`);
// 提示下一批处理建议
const nextStart = endIndex + 1;
const nextEnd = nextStart + batchSize - 1;
const hasNext = fileItems.length > nextStart;
console.log(`\n总文件数: ${totalItems}(页面共加载${totalItems}个文件)`);
if (hasNext) {
console.log(`\n【后续处理建议】\n若需处理下一批(${batchIndex + 1}批),请执行:\nselectBatch(${batchIndex + 1})`);
} else {
console.log("\n已处理完所有文件");
}
return { added: addedCount, removed: removedCount };
}
// 粘贴后立即执行一次默认处理(第1批次)
selectBatch();
// 示例调用:
// selectBatch(2); // 处理第2批(序号501-1000)
// selectBatch(3, 200); // 处理第3批,每批200个文件
其他说明
本地文件数量确认脚本(macOS / Linux)
查看当前文件夹的总文件数量(递归统计,不统计目录数量):
find . -type f 2>/dev/null | wc -l
查看当前文件夹中所有一级子目录各自的总文件数量(递归统计,不统计目录数量):
for dir in */; do count=$(find "$dir" -type f 2>/dev/null | wc -l); echo "$dir : $count 个文件"; done
分享因版权问题被自动取消
当备份自用软件时,尝试在各个账号之间通过分享、转存来转移文件时,极有可能会遇到分享被自动取消的问题,提示为因版权、色情、政治等违反了平台规则。
可以尝试直接2个账号添加好友,点击 “分享” 按钮,然后选择分享给好友,即可绕开该平台规则的限制。但是,仍然会有数量限制,会导致保存失败且无法选择部分保存。(不嫌麻烦,可以发送子目录后自行拼装,对于很多小文件的子目录还是下载+上传的效率优于转存的效率)
脚本存疑
在编写脚本时,发现百度网盘的分享页的样式命名很奇怪,没什么含义,例如:'dd.AuPKyz'、span.EOGexf,怀疑它们是临时随机生成的。专门去测试了一下不同账号的分享,发现结果却都是一致的,并没有随机改变。不过,测试结果仅限我有限的几个账号,测试均可用。
如果要是遇到问题,留言下你的分享链接,我可以看下情况并适当调整下脚本内容。
更多推荐
所有评论(0)