|
@@ -22,7 +22,7 @@
|
|
|
<!-- 设置区域 -->
|
|
|
<div class="content-right">
|
|
|
<div class="handle-item" style="margin-bottom: 5px;">
|
|
|
- <p><b>文件名检索清单:</b><span style="color: #F56C6C; font-size: 12px;">(一行填写一个)</span></p>
|
|
|
+ <p><b>文件名检索清单:</b><span style="color: #F56C6C; font-size: 12px;">(一行填一个,首尾空格清除)</span></p>
|
|
|
</div>
|
|
|
<el-input class="find-textarea" type="textarea" placeholder="查找文件名清单,多个请换行显示:
|
|
|
名称1
|
|
@@ -47,6 +47,7 @@
|
|
|
<b>文件名检索结果:</b>
|
|
|
<span style="color: #F56C6C; font-size: 12px;" >共有 {{fileList.length}} 个文件</span>
|
|
|
<span style="color: #F56C6C; font-size: 12px;" >,耗时 {{times / 1000}} 秒</span>
|
|
|
+ {{test}}
|
|
|
</p>
|
|
|
</div>
|
|
|
<div class="table-scroll">
|
|
@@ -166,11 +167,12 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ test: 0,
|
|
|
imgUrl: this.$api.imgUrl,
|
|
|
menuIndex: '1', // 重命名类型 1 or 2
|
|
|
fileList: [], // 文件列表
|
|
|
downloadDir: os.userInfo().homedir + separator + "Downloads",
|
|
|
- searchDir: '',
|
|
|
+ searchDir: 'D:\\桌面\\images',
|
|
|
coverFile: '',
|
|
|
handleData: {
|
|
|
type: '1',
|
|
@@ -302,11 +304,11 @@ export default {
|
|
|
let paramArr = [];
|
|
|
for(let i=0; i< findText.length; i++){
|
|
|
if(findText[i].trim()){
|
|
|
- paramArr.push(findText[i].trim());
|
|
|
+ paramArr.push(this.filterReg(findText[i].trim()));
|
|
|
}
|
|
|
}
|
|
|
let params = paramArr.join(',');
|
|
|
- let ruleStr = '';
|
|
|
+ let ruleStr = [];
|
|
|
let subStr = '/';
|
|
|
if(this.subFolder){ // 是否匹配子文件夹内文件
|
|
|
subStr = '/**/'
|
|
@@ -314,35 +316,47 @@ export default {
|
|
|
switch(this.handleData.rule){
|
|
|
case '1': //相同文件名
|
|
|
if(paramArr.length > 1){
|
|
|
- ruleStr = searchDir + subStr + '{'+params+'}.[!.]+';
|
|
|
+ ruleStr.push(searchDir + subStr + '{'+params+'}.[!.]+');
|
|
|
+ ruleStr.push(searchDir + subStr + '{'+params+'}');
|
|
|
}else{
|
|
|
- ruleStr = searchDir + subStr + params+'.[!.]+';
|
|
|
+ ruleStr.push(searchDir + subStr + params+'.[!.]+');
|
|
|
+ ruleStr.push(searchDir + subStr + params);
|
|
|
}
|
|
|
break;
|
|
|
case '2': //包含文件名
|
|
|
if(paramArr.length > 1){
|
|
|
- ruleStr = searchDir + subStr + '*{'+params+'}*.[!.]+';
|
|
|
+ ruleStr.push(searchDir + subStr + '*{' + params + '}*.[!.]+');
|
|
|
+ ruleStr.push(searchDir + subStr + '{' + params + '}');
|
|
|
+ ruleStr.push(searchDir + subStr + '[!.]+{' + params + '}');
|
|
|
+ ruleStr.push(searchDir + subStr + '{' + params + '}[!.]+');
|
|
|
+ ruleStr.push(searchDir + subStr + '[!.]+{' + params + '}[!.]+');
|
|
|
}else{
|
|
|
- ruleStr = searchDir + subStr + '*'+params+'*.[!.]+';
|
|
|
+ ruleStr.push(searchDir + subStr + '*' + params + '*.[!.]+');
|
|
|
+ ruleStr.push(searchDir + subStr + params);
|
|
|
+ ruleStr.push(searchDir + subStr + '[!.]+'+ params);
|
|
|
+ ruleStr.push(searchDir + subStr + params + '[!.]+');
|
|
|
+ ruleStr.push(searchDir + subStr + '[!.]+' + params + '[!.]+');
|
|
|
}
|
|
|
break;
|
|
|
case '3': //文件名格式相同
|
|
|
if(paramArr.length > 1){
|
|
|
- ruleStr = searchDir + subStr + '{'+params+'}';
|
|
|
+ ruleStr.push(searchDir + subStr + '{'+params+'}');
|
|
|
}else{
|
|
|
- ruleStr = searchDir + subStr + ''+params;
|
|
|
+ ruleStr.push(searchDir + subStr + ''+params);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
console.log('----验证规则----', ruleStr);
|
|
|
try{
|
|
|
- const files = await fg([ruleStr], { dot: true });
|
|
|
+ const files = await fg(ruleStr, { dot: true });
|
|
|
let regExp = new RegExp(paramArr.join('|'));
|
|
|
this.fileList = [];
|
|
|
files.map(item => {
|
|
|
let filename = item.substr(item.lastIndexOf('/')+1);
|
|
|
+ let title = filename.substr(0, filename.lastIndexOf('.'));
|
|
|
let res = regExp.exec(filename);
|
|
|
this.fileList.push({
|
|
|
+ title: title,
|
|
|
name: filename,
|
|
|
match: res,
|
|
|
path: item,
|
|
@@ -378,7 +392,7 @@ export default {
|
|
|
|
|
|
let size = 999999999;
|
|
|
if(!authority.isAuthority){
|
|
|
- size = 5000;
|
|
|
+ size = 999999;
|
|
|
}
|
|
|
|
|
|
if(!fs.existsSync(this.downloadDir + separator + pjson.softInfo.softName)){
|
|
@@ -388,21 +402,29 @@ export default {
|
|
|
|
|
|
setTimeout(() => {
|
|
|
for(let i = 0; i < this.fileList.length; i++){
|
|
|
+ console.log(i, new Date().getTime());
|
|
|
if(i < size){
|
|
|
let item = this.fileList[i];
|
|
|
let newFilePath = newPath + separator + item.name;
|
|
|
+ if(fse.existsSync(newFilePath)){
|
|
|
+
|
|
|
+ }
|
|
|
try {
|
|
|
if(this.handleData.type == '1'){ // 复制
|
|
|
- // fse.copySync(item.path, newFilePath);
|
|
|
- // item.status = '2';
|
|
|
|
|
|
- fse.copy(item.path, newFilePath).then(() => {
|
|
|
- console.log('复制成功!')
|
|
|
- item.status = '2';
|
|
|
- }).catch(err => {
|
|
|
- console.error('复制失败', err)
|
|
|
- item.status = '6';
|
|
|
- });
|
|
|
+
|
|
|
+
|
|
|
+ fse.copySync(item.path, newFilePath);
|
|
|
+ item.status = '2';
|
|
|
+
|
|
|
+
|
|
|
+ // fse.copy(item.path, newFilePath).then(() => {
|
|
|
+ // console.log('复制成功!')
|
|
|
+ // item.status = '2';
|
|
|
+ // }).catch(err => {
|
|
|
+ // console.error('复制失败', err)
|
|
|
+ // item.status = '6';
|
|
|
+ // });
|
|
|
|
|
|
}
|
|
|
|
|
@@ -426,6 +448,8 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ console.log('end', new Date().getTime());
|
|
|
}, 100);
|
|
|
|
|
|
}
|
|
@@ -442,11 +466,12 @@ export default {
|
|
|
},
|
|
|
// 处理正则表达式特殊字符
|
|
|
filterReg(data){
|
|
|
- let specialChar = ["$", "(", ")", "+", ".", "[", "^", "{", "|"]; // 特殊字符 正则匹配
|
|
|
+ // let specialChar = ["$", "(", ")", "+", ".", "[", "^", "{", "|"]; // 特殊字符 正则匹配
|
|
|
+ let specialChar2 = ["$", "(", ")", "^", "*", "+", "?", "[", "]", '|', '/', '\\']; // 特殊字符 正则匹配
|
|
|
let regStr = '';
|
|
|
let expArr = data.split('');
|
|
|
expArr.map(item => {
|
|
|
- if(specialChar.indexOf(item) > -1){
|
|
|
+ if(specialChar2.indexOf(item) > -1){
|
|
|
item = '\\' + item;
|
|
|
}
|
|
|
regStr += item;
|