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

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

批处理把目录下的.nc文件里的内容T1后面添加3行
G43H1
M03 S18000
M141
T2后面添加3行
G43H2
M03 S18000
M141
以此类推。并替换成原文件

回复 1# qjhmcq


    请找一个原始的.nc文件上传到网盘我试试
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher 上传到什么网盘,新手一枚

TOP

回复 3# qjhmcq


    随便哪个都行,例如百度网盘、阿里云盘。。。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

链接:https://pan.baidu.com/s/1LRFoMIarLGfWjw7POMf9hA?pwd=mhem
提取码:mhem

TOP

回复 5# qjhmcq


    你给的 1200-2400-60块-12.70.nc 这个文件里面有T1但是没有T2,根据什么规律类推呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

是这样吗?请用副本先测试,以免发生意外:
  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
复制代码

TOP

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

TOP

T的位置在文件里的行数也是不确定的

TOP

回复 7# qixiaobin0715


    这个好像不行,运行了没反应

TOP

回复 10# qjhmcq
点击copy,再粘贴。不要选中复制粘贴。

TOP

回复 11# qixiaobin0715


  OK完美运行

TOP

  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
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 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
复制代码

TOP

返回列表