function copy(fromPath, toPath) {
/*格式:H.copy(原文件路径,要复制到的路径);*/
/*解释:复制文件或文件夹 返回是否复制成功*/
var rp = /^([/][^\/:*?<>|]+[/]?)+$/;
var rp1 = /^([/][^\/:*?<>|]+)+$/;
var rp2 = /^([/][^\/:*?<>|]+)+[/]$/;
try {
if (rp.test(fromPath) == false || files.exists(fromPath) == false) throw "非法原文件地址,H.copy(?,);" + fromPath;
if (rp.test(toPath) == false) throw "非法要复制到的路径地,H.copy(,?);" + toPath;
if (rp1.test(fromPath) == true && rp1.test(toPath) == false) throw "非法要复制到的地址,H.copy(,?);" + toPath;
if (rp2.test(fromPath) == true && rp2.test(toPath) == false) throw "非法要复制到的地址,H.copy(,?);" + toPath;
} catch (err) {
log(err);
exit();
}
if (rp1.test(fromPath) == true) {
/*复制文件*/
return files.copy(fromPath, toPath);
} else if (rp2.test(fromPath)) {
/*复制文件夹*/
/*获取原文件路径文件和文件夹*/
var arr = getFilesFromPath(fromPath);
/*遍历文件路径数组*/
for (var i = 0; i < arr.length; i++) {
/*原文件路径替换成目的路径*/
var path = arr[i].replace(fromPath, toPath);
/*判断路径类型*/
if (files.isDir(arr[i])) {
/*创建目的文件夹*/
files.createWithDirs(path + "/");
} else if (files.isFile(arr[i])) {
/*复制文件到目的文件路径*/
files.copy(arr[i], path);
}
}
/*获取目的路径文件和文件夹*/
var arrToPath = getFilesFromPath(toPath);
/*通过对比原文件和目的文件数量来返回是否复制成功*/
if (arr.length == arrToPath.length) {
return true;
} else {
return false;
}
}
}
function getFilesFromPath(path) {
/*格式:H.getFilesFromPath(文件夹路径)*/
/*解释:获取指定路径所有文件和文件夹 递归遍历 返回文件路径数组*/
var arrDir = new Array();
var arrFile = new Array();
try {
var rp = /^([/][^\/:*?<>|]+[/]?)+$/;
if (rp.test(path) == false) throw "非法文件路径,H.getFilesFromPath(?);" + path;
} catch (err) {
log(err);
exit();
}
/*获取path目录下所有文件夹和文件*/
var arr = files.listDir(path);
/*遍历文件和文件夹*/
for (var i = 0; i < arr.length; i++) {
/*连接路径*/
newPath = files.join(path, arr[i]);
/*判断路径类型*/
if (files.isDir(newPath)) {
arrDir.push(newPath);
/*递归遍历文件夹*/
var arrF = getFilesFromPath(newPath);
arrDir = arrDir.concat(arrF);
} else if (files.isFile(newPath)) {
/*过滤隐藏文件*/
if (arr[i].slice(0, 1) != ".") {
arrFile.push(newPath);
}
}
}
/*按字母升序排序数组*/
arrDir.sort();
arrFile.sort();
/*连接数组并返回*/
return arrDir.concat(arrFile);