标题: [文本处理] 大佬帮下批处理把文件里指定字符串后面添加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
是这样吗?请用副本先测试,以免发生意外:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.nc') do (
- (for /f "delims=" %%j in ('type "%%i"') do (
- echo,%%j
- set "str=%%j"
- if "!str:~,1!"=="T" (
- set "str=!str:~1!"
- set /a "n=str"
- if !n! equ !str! (
- echo,G43H!n!
- echo,M03 S18000
- echo,M141
- )
- )
- ))>temp
- move "temp" "%%i"
- )
- 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
- @echo off
- for /f "useback delims=" %%i in (`dir /b /a-d *.nc`) do (
- setlocal
- for /f "useback tokens=1* delims=:" %%a in (`findstr /rnic:"^T[0-9][0-9]*$" "%%i"`) do (
- set str=%%b
- call set _"%%b"=%%str:~1%%
- )
- (for /f "useback tokens=1* delims=:" %%a in (`findstr /n .* "%%i"`) do (
- echo=%%b
- if defined _"%%b" (
- call echo G43H%%_"%%b"%%
- echo M03 S18000
- echo M141
- )
- ))>$
- move $ "%%i"
- endlocal
- )
- pause
复制代码
作者: ppll2030 时间: 2023-9-27 22:25
本帖最后由 ppll2030 于 2023-9-28 01:52 编辑
新手村的来试试。
审题不严谨,再来~!- @echo off
- setlocal enabledelayedexpansion
-
- for /f "tokens=*" %%i in ('dir /b /a-d *.nc') do call :addline "%%i"
- exit
-
- :addline
- set F=%1
- FOR /f "tokens=1* delims=:" %%A IN ('FINDstr /N "T.*" %F%') DO echo %%A>>Tlist.txt
- set lineFlag=0
- for /f "tokens=*" %%i in ('type %F%') do (
- set line=%%i
- set "n=!line:~1!"
- set /a lineFlag+=1
- for /f "delims=" %%a in (Tlist.txt) do (
- set T=%%a
- if !lineFlag! equ !T! (
- echo;!line!
- echo;G43H!n!
- echo;M03 S18000
- echo;M141
- )>>temp.txt
- )
- echo;!line!>>temp.txt
- )
-
- ren %F% %F%.%date:/=-%.bak
- ren temp.txt %F%
- del /q Tlist.txt
- goto :eof
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |