批处理,替换(或者删除)当前文件夹中所有TXT文档中指定的字符?

如题,当前文件夹中有许多TXT文档:
1、每个txt文档中都有几个字符需要替换,比如123,都要更替为abc,456替换为xyz。
2、每个txt文档中的444,字符都要删除掉。
3、每个txt文档中的含有%的行要删除。
可能需要编写3批处理文件,逐个运行一下....
请教专业人士帮忙写一下......谢谢!

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b "*.txt"') do (
for /f "skip=2 delims=" %%a in ('find /v "%%" "%%i"') do (
set "word1=%%a"
set "word1=!word1:123=abc!"
set "word2=!word1!"
set "word2=!word2:456=xyz!"
set "word3=!word2!"
set "word3=!word2:444=!"
echo,!word3! >>"%%~ni_tmp.txt"
)
del "%%i" /f /q
ren "%%~ni_tmp.txt" "%%i"
)
pause

注:把批处理文件跟txt放在一起运行,测试前先备份好原文件

您的采纳是我们的动力和鼓励,请及时点击【采纳回答】

追答

请及时采纳回答

追问

到厂里试了,非常好,谢谢你了。发现几个新问题,接着上面的我再追加一下:
4、每个txt文档添加一个首行,内容为“T1 D*”(引号中间的字符,下同)。
5、每个txt文档添加一个末行,内容为“M05M30”。
6、每个txt文档,含有字符G10的行,再增加字符“G20 G30”。
7、每个txt文档,含有字符G50的行,整个行替换为“G60 G70 G80 G90”。

追答

以下代码只对追问中的问题进行处理

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b "*.txt"') do (
echo,T1 D*>>"%%~ni_tmp.txt"
for /f "delims=" %%a in ('type "%%i"') do (
echo,%%a|find "G10">nul&&echo,%%a G20 G30>>"%%~ni_tmp.txt"||echo,%%a>>"%%~ni_tmp.txt"
)
del "%%i" /f /q
ren "%%~ni_tmp.txt" "%%i"
for /f "delims=" %%a in ('type "%%i"') do (
echo,%%a|find "G50">nul&&echo,G60 G70 G80 G90>>"%%~ni_tmp.txt"||echo,%%a>>"%%~ni_tmp.txt"
)
echo,M05M30>>"%%~ni_tmp.txt"
del "%%i" /f /q
ren "%%~ni_tmp.txt" "%%i"
)
pause

注:把批处理文件跟txt放在一起运行,测试前先备份好原文件

您的采纳是我们的动力和鼓励,请及时点击【采纳回答】


idongjun,你好,有些情况希望你了解下,追问的作用并不是让你提出新的问题,而是针对回答者最初的回答做出反馈,比如说这里的我的第一段代码假如不能运行或是有错误提示,这样你就可以追问,而不是像你这样提出新的问题,我看了下你问题中透出的txt文件的一些字符串,如果没错的话,应该是数控车床的编程代码,那么,问句话,让你加班不算工钱,你愿意干吗?而你这样的追问就如“加班不算工钱”,将心比心,何苦为难愿意帮助你的人?所以如果你有新的问题,请另外重新提问,这样对大家都有好处

留下。扣.扣,方便联系解决

请及时采纳回答

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答