从百度云网盘下载一些视频教学资源的时候,在每个文件夹中都会有一些不需要的东西,比如说淘宝店的二维码图片,一些广告文档和软件等等。如果文件夹的数量比较少还好,数量大的话对于强迫症选手来说把资料规整好就非常的痛苦了。这时候我们就可以通过 node 编写脚本来批量对文件夹进行操作。
1. 重命名所有的文件夹,去掉淘宝客服账号;
2. 删除所有文件夹中除了 视频 的文件;
首先编写一个递归删除文件的函数:
/**
*
* @param {string} path 需要删除的文件夹路径
* @param {string} filename 不需要删除的文件名
*/
function removeDir(url, filename = '') {
let files = [];
files = fs.readdirSync(url).filter(item => item !== filename);
files.map(item => {
const currentPath = path.join(url, item);
if (fs.statSync(currentPath).isDirectory()) {
removeDir(currentPath);
} else {
fs.unlinkSync(currentPath);
}
});
if (!filename) {
fs.rmdirSync(url);
}
}
/**
*
* @param {string} url 需要处理的文件夹路径
* @param {string} name 需要替换的文件名称
* @param {string} filename 例外的文件名称
*/
function handleDir(url, name, replaceName, filename) {
fs.readdirSync(url).map(item => {
if (item.indexOf(name) === -1) return;
const newName = item.replace(name, replaceName);
const oldPath = path.join(url, item);
const newPath = path.join(url, newName);
fs.renameSync(oldPath, newPath);
removeDir(newPath, filename);
});
}
const fs = require('fs');
const path = require('path');
function removeDir(url, filename = '') {
let files = [];
files = fs.readdirSync(url).filter(item => item !== filename);
files.map(item => {
const currentPath = path.join(url, item);
if (fs.statSync(currentPath).isDirectory()) {
removeDir(currentPath);
} else {
fs.unlinkSync(currentPath);
}
});
if (!filename) {
fs.rmdirSync(url);
}
}
function handleDir(url, name, replaceName, filename) {
fs.readdirSync(url).map(item => {
if (item.indexOf(name) === -1) return;
const newName = item.replace(name, replaceName);
const oldPath = path.join(url, item);
const newPath = path.join(url, newName);
fs.renameSync(oldPath, newPath);
removeDir(newPath, filename);
});
}
// 将当前路径下所有包含淘宝客服名的文件夹名替换掉,并且删除除了视频以外的其他子文件夹
handleDir(__dirname, '-【旺旺:aaaaaaaa】', '', '视频');