用windows删除一些工程文件时因为目录深度太深,导致用资源管理器和cmd都没有办法删除。手头有nodejs,顺便参考了网上的一份递归删除目录的代码,放在这里做备用。使用的时候修改目录参数,然后用node执行即可。
var fs = require('fs');
var rmdirSync = (function(){
function iterator(url,dirs){
var stat = fs.statSync(url);
if(stat.isDirectory()){
dirs.unshift(url);//收集目录
inner(url,dirs);
}else if(stat.isFile()){
fs.unlinkSync(url);//直接删除文件
}
}
function inner(path,dirs){
var arr = fs.readdirSync(path);
for(var i = 0, el ; el = arr[i++];){
iterator(path+"/"+el,dirs);
}
}
return function(dir,cb){
cb = cb || function(){};
var dirs = [];
try{
iterator(dir,dirs);
for(var i = 0, el ; el = dirs[i++];){
fs.rmdirSync(el);//一次性删除所有收集到的目录
}
cb()
}catch(e){//如果文件或目录本来就不存在,fs.statSync会报错,不过我们还是当成没有异常发生
e.code === "ENOENT" ? cb() : cb(e);
}
}
})();
rmdirSync("D:\\Documents\\Dropbox\\PhpstormProjects\\2",function(e){
console.log("!!!"+e)
console.log("删除目录以及子目录成功")
})

