批处理如何实现文本文件中指定行内容替换?(求补充优化)

下午求教了一个问题:
有一个config.txt文本文件,首先要查找其中的第5行的内容是否与指定符串 DEFA=TEST 完全相同,如不是,则用指定的 DEFA=TEST 将该行的内容替换掉,该问题已得到 睿之锐 朋友的完美解答如下:
@echo off&setlocal Enabledelayedexpansion
if exist "templog.txt" del /q /f /a "templog.txt"
set "file=config.ini"
FOR %%i IN ("%file%") DO set G=%%~dpi&set T=%%~ni&set K=%%~xi&set P=%%~nxi
for /f "tokens=1* delims=:" %%a in ('findstr /n ".*" "%file%"') do (
if %%a==5 (if "%%b" NEQ "DEFA=TEST" (goto P) else Del /f /q /a "templog.txt"&exit)
echo %%b>>"templog.txt"
)
:P
echo DEFA=TEST>>"templog.txt"
more +5 "%file%">>"templog.txt"
ren "%file%" "%T%【%random%】%K%"
copy "templog.txt" "%G%%P%"
del /q /f /a "templog.txt"
start "" "%file%"&exit

现在再请教一下,如果上述 DEFA=TEST 中的 TEST 不是常数而是一个变量,如由诸如判定当前目录或盘符等命令自动产生后加在 DEFA= 后面合成一等式字符串再与TXT文件中第五行的内容进第比较替换,则又该如何修改上面的批处理?

@echo off&setlocal Enabledelayedexpansion
if exist "templog.txt" del /q /f /a "templog.txt"
set "file=config.ini"
FOR %%i IN ("%file%") DO set G=%%~dpi&set T=%%~ni&set K=%%~xi&set P=%%~nxi
for /f "tokens=1* delims=:" %%a in ('findstr /n ".*" "%file%"') do (
if %%a==5 (set var_x=DEFA=%G%
if "%%b" NEQ "!var_x!" (goto P) else Del /f /q /a "templog.txt"&exit)
echo %%b>>"templog.txt"
)
:P
echo !var_x!>>"templog.txt"
more +5 "%file%">>"templog.txt"
ren "%file%" "%T%【%random%】%K%"
copy "templog.txt" "%G%%P%"
del /q /f /a "templog.txt"
start "" "%file%"&exit
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答