rem 定義變量延遲環境,關閉回顯
@echo off&setlocal enabledelayedexpansion
rem 讀取a.txt所有內容
for /f "eol=* tokens=*" %%i in (a.txt) do (
rem 設置變量a為每行內容
set a=%%i
rem 如果該行有123,則將其改為456
set "a=!a:123=456!"
rem 把修改后的全部行存入$
echo !a!>>$)
rem 用$的內容替換原來a.txt內容
move $ a.txt
出處:https://blog.csdn.net/everdayPHP/article/details/78919020
===============================================================
查找固定的內容並替換的為固定文本的情況:
文件A.txt是需要替換的文件,運行下面這個批處理:
@echo off&setlocal EnableDelayedExpansion for /f "delims=" %%b in ('type A.txt') do ( set "str=%%b"&set "str=!baistr:ABC=123!"&set "str=!str:XYZ=AFK!" echo !str! >>new_A.txt ) start new_A.txt
下面這個是不去空行的,有必要你就用吧,有點長!你復制過去刪除多余空格,不行留郵箱發給你。百度老是存在這個問題,貼出來再復制回去格式就不一樣了。真氣人!!!
@echo off&setlocal EnableDelayedExpansion for /f "delims=" %%a in ('findstr /n .* A.txt') do ( set "str=%%a" set "str=!str:ABC=123!" set "str=!str:XYZ=AFK!" echo !str:~1! >>tmp.txt ) for /f "delims=" %%b in ('type tmp.txt') do ( set "str=%%b" if "!str!"==": " ( call echo. >>new_A.txt ) else ( echo !str:~1! >>new_A.txt )) del tmp.txt&start new_A.txt
出處:https://zhidao.baidu.com/question/84256975.html
=============================================================
根據上面的參考,自己稍微修改點,可以適用於自己的需求的程序
自己聯系和測試程序

rem 定義變量延遲環境,關閉回顯 @echo off setlocal enabledelayedexpansion ::goto :aa ::goto :bb2 goto :cc rem 讀取a.txt所有內容 for /f "eol=* tokens=*" %%i in ('type test.txt') do ( rem 設置變量a為每行內容 set a=%%i rem 如果該行有123,則將其改為456 echo !a!-- set "a=!a:dd*=456!" rem 把修改后的全部行存入$ echo !a!>>$) rem 用$的內容替換原來a.txt內容 move $ test.txt goto :eof :aa for %%i in (test.txt) do set file=%%~fi echo ========== for /f "delims=" %%i in ('type test.txt') do ( set str=%%i set "str=!str:dd=456!" echo !str!>>$ ) move $ test.txt goto :eof :bb1 set old= for /f "delims=" %%a in ('findstr .* test.txt') do ( set "str=%%a" set "str=!str:ABC=123!" set "str=!str:XYZ=AFK!" echo !str! ) goto :eof :bb2 set old= rem 查找並匹配最后一行,包含king的字符串 for /f "eol=*" %%a in ('findstr /b "king" test.txt') do (set "old=%%a") echo %old%=============== rem 再次查找完全陪陪的行,並替換queen的字符串 for /f "delims=" %%b in ('type test.txt') do ( set "str=%%b" if "!str!"=="%old%" (set str=queen[00-11-22]) echo !str!>>$ ) move $ test.txt goto :eof :cc set aa=kjk dfdasf jlksj ij hgn my name AA set bb=my echo.%aa% | findstr /C:"%bb%" goto :eof