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
===============================================================
查找固定的内容并替換的為固定文本的情況:
檔案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://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-YWan5SZ2EGNyEmM1MDOycDNmlTOzEjYmBTOzQDO0Q2MhhzNy8CXxMzLcdDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL1M3Lc9CX6MHc0RHaiojIsJye.gif)
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