Board logo

标题: [文本处理] 大佬帮下批处理把文件里指定字符串后面添加3行 [打印本页]

作者: qjhmcq    时间: 2023-9-27 13:52     标题: 大佬帮下批处理把文件里指定字符串后面添加3行

批处理把目录下的.nc文件里的内容T1后面添加3行
G43H1
M03 S18000
M141
T2后面添加3行
G43H2
M03 S18000
M141
以此类推。并替换成原文件
作者: Batcher    时间: 2023-9-27 14:04

回复 1# qjhmcq


    请找一个原始的.nc文件上传到网盘我试试
作者: qjhmcq    时间: 2023-9-27 14:14

回复 2# Batcher 上传到什么网盘,新手一枚
作者: Batcher    时间: 2023-9-27 14:26

回复 3# qjhmcq


    随便哪个都行,例如百度网盘、阿里云盘。。。
作者: qjhmcq    时间: 2023-9-27 14:33

链接:https://pan.baidu.com/s/1LRFoMIarLGfWjw7POMf9hA?pwd=mhem
提取码:mhem
作者: Batcher    时间: 2023-9-27 15:14

回复 5# qjhmcq


    你给的 1200-2400-60块-12.70.nc 这个文件里面有T1但是没有T2,根据什么规律类推呢?
作者: qixiaobin0715    时间: 2023-9-27 15:37

是这样吗?请用副本先测试,以免发生意外:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.nc') do (
  4.     (for /f "delims=" %%j in ('type "%%i"') do (
  5.         echo,%%j
  6.         set "str=%%j"
  7.         if "!str:~,1!"=="T" (
  8.             set "str=!str:~1!"
  9.             set /a "n=str"
  10.             if !n! equ !str! (
  11.                 echo,G43H!n!
  12.                 echo,M03 S18000
  13.                 echo,M141
  14.             )
  15.         )
  16.     ))>temp
  17.     move "temp" "%%i"
  18. )
  19. pause
复制代码

作者: qjhmcq    时间: 2023-9-27 16:08

T1,和T几是不确定的。
是根据文件里T后面的数字来推算的,比如文件里有T5那么在T5后面就加三行代码
G43H5
M03 S18000
M141
有T6那么T6后面再加三行
G43H6
M03 S18000
M141
文件里不确定有多少个T,每个T后面的数字也是不确定的
作者: qjhmcq    时间: 2023-9-27 16:10

T的位置在文件里的行数也是不确定的
作者: qjhmcq    时间: 2023-9-27 16:11

回复 7# qixiaobin0715


    这个好像不行,运行了没反应
作者: qixiaobin0715    时间: 2023-9-27 16:30

回复 10# qjhmcq
点击copy,再粘贴。不要选中复制粘贴。
作者: qjhmcq    时间: 2023-9-27 16:35

回复 11# qixiaobin0715


  OK完美运行
作者: 77七    时间: 2023-9-27 20:08

  1. @echo off
  2. for /f "useback delims=" %%i in (`dir /b /a-d *.nc`) do (
  3. setlocal
  4. for /f "useback tokens=1* delims=:" %%a in (`findstr /rnic:"^T[0-9][0-9]*$" "%%i"`) do (
  5. set str=%%b
  6. call set _"%%b"=%%str:~1%%
  7. )
  8. (for /f "useback tokens=1* delims=:" %%a in (`findstr /n .* "%%i"`) do (
  9. echo=%%b
  10. if defined _"%%b" (
  11. call echo G43H%%_"%%b"%%
  12. echo M03 S18000
  13. echo M141
  14. )
  15. ))>$
  16. move $ "%%i"
  17. endlocal
  18. )
  19. pause
复制代码

作者: ppll2030    时间: 2023-9-27 22:25

本帖最后由 ppll2030 于 2023-9-28 01:52 编辑

新手村的来试试。
审题不严谨,再来~!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%i in ('dir /b /a-d *.nc') do call :addline "%%i"
  4. exit
  5. :addline
  6. set F=%1
  7. FOR /f "tokens=1* delims=:" %%A IN ('FINDstr /N "T.*" %F%') DO echo %%A>>Tlist.txt
  8. set lineFlag=0
  9. for /f "tokens=*" %%i in ('type %F%') do (
  10. set line=%%i
  11. set "n=!line:~1!"
  12. set /a lineFlag+=1
  13. for /f "delims=" %%a in (Tlist.txt) do (
  14. set T=%%a
  15. if !lineFlag! equ !T! (
  16. echo;!line!
  17. echo;G43H!n!
  18. echo;M03 S18000
  19. echo;M141
  20. )>>temp.txt
  21. )
  22. echo;!line!>>temp.txt
  23. )
  24. ren %F% %F%.%date:/=-%.bak
  25. ren temp.txt %F%
  26. del /q Tlist.txt
  27. goto :eof
复制代码





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