Batch file 如何使用批处理脚本替换文件中的两行文本
我需要替换文本文件中的两行字符串。 我编写了一个脚本来替换一个字符串:Batch file 如何使用批处理脚本替换文件中的两行文本,batch-file,Batch File,我需要替换文本文件中的两行字符串。 我编写了一个脚本来替换一个字符串: @echo off setlocal enabledelayedexpansion rem file name Set infile=file.txt rem what to find Set find=123 rem value to replace Set replace=321 @echo off setlocal enabledelayedexpansion set COUNT=0 for /F "token
@echo off
setlocal enabledelayedexpansion
rem file name
Set infile=file.txt
rem what to find
Set find=123
rem value to replace
Set replace=321
@echo off
setlocal enabledelayedexpansion
set COUNT=0
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
Echo !TMPR!>>tmp.txt
)
move tmp.txt %infile%
pause
如何修改它以一次替换2行?我的意思是将“find”改为“replace”,将“find2”改为“replace2”?在您的
设置TMPR=…
之后,添加设置TMPR=!TMPR:%find2%=%replace2%代码>:
@echo off
setlocal enabledelayedexpansion
del tmp.txt
rem file name
Set infile=file.txt
rem what to find
Set find=abc
set find2=def
rem value to replace
Set replace=123
set replace2=456
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
set TMPR=!TMPR:%find2%=%replace2%!
Echo !TMPR!>>tmp.txt
)
type tmp.txt
file.txt:
aaa
abc
bbb
def
ccc
xxxabcyyy
uuudefvvv
nnnabcdefmmm
输出:
aaa
123
bbb
456
ccc
xxx123yyy
uuu456vvv
nnn123456mmm
是否没有其他方法将2值传递给搜索属性字符串并替换该值的函数?
比如:
代码:
源文件看起来像:
prop.first.name=firstname
prop.last.name=lastname
prop.pssw.word=密码
prop.url.link=alink
需要替换输入“=”等号后的值
想法是在设置TMPR=…
之后,使用不同的参数调用一个通用函数4次,添加设置TMPR=!TMPR:%find2%=%replace2%代码>@Stephan它只是替换了第二行而不是第一行。这是怎么回事?您现有的代码将替换第一行,对吗?在我说的替换第二行的地方添加我的行。好的,这是一个误解)用你的代码是的,它替换两个相等的字符串。但是我想要其他的:我有字符串'abc'和'def',我希望它们分别被替换为'123'和'456'。
CALL :modify prop.first.name , myName
CALL :modify prop.last.name , myLastName
:modify
set "source=srcFile.txt"
set "target=tmpFile.txt"
set property=%~1
set value=%~2
setlocal enableDelayedExpansion
(
for /F "tokens=1* delims==" %%a in ('findstr /B "^" %source%') do (
set line=%%b
if defined line echo !line:%property%=%property%=%value%!
)
) > %target%
endlocal