找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22724|回复: 13

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

[复制链接]
发表于 2023-9-27 13:52:17 | 显示全部楼层 |阅读模式
批处理把目录下的.nc文件里的内容T1后面添加3行
G43H1
M03 S18000
M141
T2后面添加3行
G43H2
M03 S18000
M141
以此类推。并替换成原文件
发表于 2023-9-27 14:04:20 | 显示全部楼层
回复 1# qjhmcq


    请找一个原始的.nc文件上传到网盘我试试
 楼主| 发表于 2023-9-27 14:14:02 | 显示全部楼层
回复 2# Batcher 上传到什么网盘,新手一枚
发表于 2023-9-27 14:26:26 | 显示全部楼层
回复 3# qjhmcq


    随便哪个都行,例如百度网盘、阿里云盘。。。
 楼主| 发表于 2023-9-27 14:33:31 | 显示全部楼层
链接:https://pan.baidu.com/s/1LRFoMIarLGfWjw7POMf9hA?pwd=mhem
提取码:mhem
发表于 2023-9-27 15:14:28 | 显示全部楼层
回复 5# qjhmcq


    你给的 1200-2400-60块-12.70.nc 这个文件里面有T1但是没有T2,根据什么规律类推呢?
发表于 2023-9-27 15:37:19 | 显示全部楼层
是这样吗?请用副本先测试,以免发生意外:
  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
复制代码
 楼主| 发表于 2023-9-27 16:08:47 | 显示全部楼层
T1,和T几是不确定的。
是根据文件里T后面的数字来推算的,比如文件里有T5那么在T5后面就加三行代码
G43H5
M03 S18000
M141
有T6那么T6后面再加三行
G43H6
M03 S18000
M141
文件里不确定有多少个T,每个T后面的数字也是不确定的
 楼主| 发表于 2023-9-27 16:10:56 | 显示全部楼层
T的位置在文件里的行数也是不确定的
 楼主| 发表于 2023-9-27 16:11:40 | 显示全部楼层
回复 7# qixiaobin0715


    这个好像不行,运行了没反应
发表于 2023-9-27 16:30:49 | 显示全部楼层
回复 10# qjhmcq
点击copy,再粘贴。不要选中复制粘贴。
 楼主| 发表于 2023-9-27 16:35:08 | 显示全部楼层
回复 11# qixiaobin0715


  OK完美运行
发表于 2023-9-27 20:08:27 | 显示全部楼层
  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
复制代码
发表于 2023-9-27 22:25:04 | 显示全部楼层
本帖最后由 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 16:44 , Processed in 0.011670 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表