CMD命令行如何替换txt文件中的指定内容

CMD命令行如何替换txt文件中的指定内容,第1张

@echo off&setlocal enabledelayedexpansion

::请设置一个文本中不包含的字符,这里我预设为¥,

::如果你的文本中包含,请自行修改,比如设为# $ 等。

set "char=¥"

::设置处理的文本

set "file=D:\holle.txt"

call :replace

for /f "delims=" %%a in (tmp.txt$) do (

      set var=%%a

      set var=!var:^<string name%char%"holle"^>123^</string^>=^<string name%char%"holle"^>456^</string^>!&echo !var:%char%==!>>new_file.txt

)

del tmp.txt$

pause&goto :eof 2>nul

:replace

for /f "tokens=1* delims==" %%a in ('type "%file%"') do (

    set temp=%%a%char%%%b

    call :loop

)

goto :eof 2>nul

:loop

for /f "tokens=1* delims==" %%m in ("!temp!") do (

        set temp=%%m%char%%%n

        if not "%%n"=="" (goto loop) else echo !temp:~0,-1!>>tmp.txt$

)

以上部分代码来源于网络,新的文本在脚本目录下生成,名为“new_file.txt”

先测试,看2.txt 批处理放1.txt同位置运行或文件名带全路径 如把代码中的 :: 去掉就是直接改原文件,

第2~5行可据实改

2:文件名

3:字符串 (据此定位替换所在行)

4:字符串(据此定位其后的=" " )

5:字符串 (设定的新值)

代码中▲为估计原文中不会出现的字符,如有则换成别的

原文那双引号中未知的被替换的部分必须有内容至少一字符,空格也行,否则出错

@echo off

set "fn=1.txt"

set "s1=property"

set "s2=value"

set "s3=newstr"

for /f "delims=:" %%i in ('type "%fn%"^|findstr/inc:"%s1%"')do set #%%i=y

(for /f "tokens=1* delims=:" %%i in ('type "%fn%"^|findstr/n .*')do (

   set "h=%%j"

   if defined #%%i (

      setlocal enabledelayedexpansion

      for /f "tokens=1* delims=▲" %%k in ("!h:%s2%=%s2%▲!")do (

         endlocal

         for /f tokens^=2*delims^=^" %%m in ("%%l")do echo %%k="%s3%"%%n

   ))else echo.%%j

))>2.txt

:: move 2.txt "%fn%"

pause


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11848360.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存