
标题: [文本处理] 批处理怎样对多个文本内的指定字符串进行替换并按指定格式合并? [打印本页]
作者: wlt369 时间: 2017-3-23 13:51 标题: 批处理怎样对多个文本内的指定字符串进行替换并按指定格式合并?
【求助】按照格式合并文件!
有N多NC文件放在单独的文件夹里面,还可能会有很多文件夹都是以G开头,先要把NC文件里面的“G54”替换为“文件夹名称”,然后文件头尾不变,把其他部分合并到一起,放到合并文件夹里面,已经做好了个例子,请高手做个批处理文件,谢谢了!
作者: WHY 时间: 2017-3-23 16:18
本帖最后由 WHY 于 2017-3-24 11:11 编辑
- @if(0)==(0) echo off
- md 合并 2>nul
- dir /b /s *.nc | findstr "\\G[0-9][0-9]*\\[^\\]*$" | cscript //nologo //e:jscript "%~f0" > 合并\result.nc
- pause & goto :EOF
- @end
-
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var s = '';
-
- while(!WSH.StdIn.AtEndofStream) {
- var strFile = WSH.StdIn.ReadLine();
- var strFolder = strFile.replace(/.+?\\([^\\]+)\\[^\\]+$/, '$1');
-
- var objFile = fso.OpenTextFile(strFile, 1);
- var str = objFile.ReadAll().replace(/(\r\n)+$/, '');
- var arr = str.split('\r\n');
- objFile.Close();
-
- if(typeof(s1) == 'undefined'){
- var s1 = arr.slice(0, 6).join('\r\n') + '\r\n';
- var s3 = arr.slice(-3).join('\r\n');
- }
-
- var s2 = arr.slice(6, -3).join('\r\n');
- s += s2.replace(/\bG54\b/g, strFolder) + '\r\n';
- }
-
- WSH.Echo(s1 + s + s3)
复制代码
作者: pcl_test 时间: 2017-3-23 16:44
本帖最后由 pcl_test 于 2017-3-24 11:46 编辑
- @echo off
- set r=[IO.File]::ReadAllText($_.FullName, [Text.Encoding]::Default)
- powershell ^
- $s='';dir . G*^|?{$_.PSIsContainer}^|%%{dir $_ *.nc^
- ^|%%{(%r% -replace '\bG54\b',$_.Directory.Name) -match '^((.+\n){6})([\s\S]+?)((.+\n){2}.+)\s*$'^|out-null;^
- if(!$n){$a=$matches[1];$b=$matches[4]}$n=1;$s+=$matches[3]^}};^
- $a+$s+$b^|out-file '合并.nc' -encoding Default
- pause
复制代码
作者: wlt369 时间: 2017-3-23 18:21
回复 3# pcl_test
谢谢楼上两位!
小弟不才,再问一下,执行批处理后显示如图,任意键后就退出了!我想要的是新建一个“合并”的文件夹,把合并后的“合并.NC”文件放到里面,谢谢了!
作者: WHY 时间: 2017-3-24 11:13
回复 4# wlt369
已修改
作者: WHY 时间: 2017-3-24 11:14
- @echo off
- md 合并 2>nul
- PowerShell -c "$arr=dir G*\*.nc|%%{(type $_) -replace '\bG54\b',$_.Directory.Name};$str=$arr -join \"`r`n\";$str -replace '(?n:[^\r\n]+\r\n){2}%%(?n:\r\n)+%%\r\n(?n:[^\r\n]+\r\n){5}', ''" > 合并\result.nc
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |