[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样对多个文本内的指定字符串进行替换并按指定格式合并?

【求助】按照格式合并文件!
有N多NC文件放在单独的文件夹里面,还可能会有很多文件夹都是以G开头,先要把NC文件里面的“G54”替换为“文件夹名称”,然后文件头尾不变,把其他部分合并到一起,放到合并文件夹里面,已经做好了个例子,请高手做个批处理文件,谢谢了!

本帖最后由 WHY 于 2017-3-24 11:11 编辑
  1. @if(0)==(0) echo off
  2. md 合并 2>nul
  3. dir /b /s *.nc | findstr "\\G[0-9][0-9]*\\[^\\]*$" | cscript //nologo //e:jscript "%~f0" > 合并\result.nc
  4. pause & goto :EOF
  5. @end
  6. var fso = new ActiveXObject('Scripting.FileSystemObject');
  7. var s = '';
  8. while(!WSH.StdIn.AtEndofStream) {
  9.     var strFile = WSH.StdIn.ReadLine();
  10.     var strFolder = strFile.replace(/.+?\\([^\\]+)\\[^\\]+$/, '$1');
  11.     var objFile = fso.OpenTextFile(strFile, 1);
  12.     var str = objFile.ReadAll().replace(/(\r\n)+$/, '');
  13.     var arr = str.split('\r\n');
  14.     objFile.Close();
  15.     if(typeof(s1) == 'undefined'){
  16.         var s1 = arr.slice(0, 6).join('\r\n') + '\r\n';
  17.         var s3 = arr.slice(-3).join('\r\n');
  18.     }
  19.     var s2 = arr.slice(6, -3).join('\r\n');
  20.     s += s2.replace(/\bG54\b/g, strFolder) + '\r\n';
  21. }
  22. WSH.Echo(s1 + s + s3)
复制代码
1

评分人数

TOP

本帖最后由 pcl_test 于 2017-3-24 11:46 编辑
  1. @echo off
  2. set r=[IO.File]::ReadAllText($_.FullName, [Text.Encoding]::Default)
  3. powershell ^
  4.     $s='';dir . G*^|?{$_.PSIsContainer}^|%%{dir $_ *.nc^
  5.     ^|%%{(%r% -replace '\bG54\b',$_.Directory.Name) -match '^((.+\n){6})([\s\S]+?)((.+\n){2}.+)\s*$'^|out-null;^
  6.     if(!$n){$a=$matches[1];$b=$matches[4]}$n=1;$s+=$matches[3]^}};^
  7.     $a+$s+$b^|out-file '合并.nc' -encoding Default
  8. pause
复制代码
2

评分人数

TOP

回复 3# pcl_test



谢谢楼上两位!
小弟不才,再问一下,执行批处理后显示如图,任意键后就退出了!我想要的是新建一个“合并”的文件夹,把合并后的“合并.NC”文件放到里面,谢谢了!

TOP

回复 4# wlt369


    已修改

TOP

  1. @echo off
  2. md 合并 2>nul
  3. 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
  4. pause
复制代码

TOP

返回列表