qiushang 11 hónapja
szülő
commit
06cbe89262
1 módosított fájl, 48 hozzáadás és 23 törlés
  1. 48 23
      src/renderer/components/home.vue

+ 48 - 23
src/renderer/components/home.vue

@@ -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;