批处理如何实现文本文件中指定行内容替换?(求补充优化)
下午求教了一个问题:有一个config.txt文本文件,首先要查找其中的第5行的内容是否与指定符串DEFA=TEST完全相同,如不是,则用指定的DEFA=TEST将该行的...
下午求教了一个问题:
有一个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文件中第五行的内容进第比较替换,则又该如何修改上面的批处理? 展开
有一个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文件中第五行的内容进第比较替换,则又该如何修改上面的批处理? 展开
1个回答
展开全部
@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
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询