Board logo

标题: [已解决],20元,批处理加入指定字符。 [打印本页]

作者: liynng    时间: 2019-12-8 20:00     标题: [已解决],20元,批处理加入指定字符。

本帖最后由 liynng 于 2019-12-8 21:14 编辑

文件夹中有很多子文件夹,每个子文件夹中很多.nc格式的文本。
1,在每个文本的第1行下面插入一行M35T1
2,在每个文本中查找最前面以Z开头的行,在前面加入G43H1   注意;只加最前面一行,后面都不用加了。

如;

%
(PROGRAM NAME : A2-1-F03.NC )
(Part: A2-1 )
(DATE=26-11-2019  TIME=14:30:57 )
(T1=D4R2_1_1  D=4.00  R=2.00 )
G17G40G49G80G54
G91G28Z0
G43H0
S12000M03
G00G90X0Y0
Z10.1M08
X-41.706Y-4.33
Z-.748
G01Z-1.948F2000


处理后;

%
M35T1
(PROGRAM NAME : A2-1-F03.NC )
(Part: A2-1 )
(DATE=26-11-2019  TIME=14:30:57 )
(T1=D4R2_1_1  D=4.00  R=2.00 )
G17G40G49G80G54
G91G28Z0
G43H0
S12000M03
G00G90X0Y0
G43H1Z10.1M08
X-41.706Y-4.33
Z-.748
G01Z-1.948F2000
作者: zaqmlp    时间: 2019-12-8 20:10

本帖最后由 zaqmlp 于 2019-12-8 20:17 编辑
  1. /*&cls
  2. @echo off
  3. set info=互助互利,支付宝扫码头像,感谢打赏
  4. rem 有问题,可加QQ956535081及时沟通
  5. title %info%
  6. cd /d "%~dp0"
  7. dir /a-d/b/s *.nc|cscript -nologo -e:jscript "%~f0"
  8. :end
  9. title %info%
  10. pause
  11. exit
  12. */
  13. var fso=new ActiveXObject('Scripting.FileSystemObject');
  14. while(!WSH.StdIn.AtEndOfStream){
  15.     var line=WSH.StdIn.ReadLine();
  16.     WSH.echo(line);
  17.     var file=fso.GetFile(line);
  18.     var f1=fso.OpenTextFile(file.Path, 1);
  19.     var flag=true, n=1, arr=[];
  20.     while(!f1.AtEndOfStream){
  21.         var line=f1.ReadLine();
  22.         if(n==1){line=line+'\r\n'+'M35T1';}
  23.         if(line.replace(/^\s*/,'').substring(0,1)=='Z'){
  24.             if(flag){
  25.                 flag=false;arr.push('G43H1'+line);
  26.             }else{arr.push(line);}
  27.         }else{arr.push(line);}
  28.         n++;
  29.     };
  30.     f1.Close();
  31.     var f1=fso.CreateTextFile(file.Path, 2);
  32.     for(var i=0;i<arr.length;i++){
  33.         f1.WriteLine(arr[i]);
  34.     };
  35.     f1.Close();
  36. }
  37. WSH.Echo('Done');
复制代码

作者: Batcher    时间: 2019-12-8 20:12

回复 1# liynng


下载 sed.exe 跟下面的 test.bat 放在待处理的文件夹下
http://bcn.bathome.net/s/tool/index.html?key=sed

test.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /ad') do (
  4.     echo 正在处理文件夹:%%i
  5.     sed -i -e "1s/$/&\nM35T1/" -e "0,/^Z/ s/^Z/G43H1&/" "%%i\*.nc"
  6. )
复制代码

作者: liynng    时间: 2019-12-8 20:47

回复 3# Batcher


  不知道是不是我的问题,你这我处理不出来 上面那人回的可以了。
作者: Batcher    时间: 2019-12-8 21:04

回复 4# liynng


问题解决了就好。
如果以后遇到某个代码执行不成功,请参考Q-01的方法:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2