我想编写一个批处理文件,逐行在文本文件中查找给定的字符串,然后用另一个给定的字符串替换整行。
示例: 有文件text.txt string_replace = abc string_replace_with = xyz 如果text.txt中的每一行都包含string_replace,那么该行将被替换为string_replace_with
任何人都可以帮助我吗? 非常感谢
答案 0 :(得分:1)
@echo off
SET InFile=test.txt
FOR /F "tokens=*" %%A IN ('FINDSTR "xyz" "%InFile%"') DO CALL :FindString "%%A"
pause
goto :eof
:FindString
SET String=%~1
SET String=%String:xyz=abc%
echo.%String%>getout.txt
如果它可以解决您的问题,请尝试这些。根据您的问题,我理解的是您希望找到并用所需的单词替换该单词。
答案 1 :(得分:0)
为自己设置一个sed
的Windows端口。
答案 2 :(得分:0)
如果您像这样启动此SAR.BAT文件,它将用xyz替换abc
SAR" fileinput.txt" " fileoutput.txt" " ABC" " XYZ"
::Search and replace
@echo off
if "%~3"=="" (
echo.Search and replace
echo Syntax:
echo %0 "filein.txt" "fileout.ext" "regex" "replace_text" [first]
echo.
echo. if [first] is present only the first occurrence is changed
goto :EOF
)
if "%~5"=="" (set global=true) else (set global=false)
set s=regex.replace(wscript.stdin.readall,"%~4")
>_.vbs echo set regex=new regexp
>>_.vbs echo regex.global=%global%
>>_.vbs echo regEx.IgnoreCase=True
>>_.vbs echo regex.pattern="%~3"
>>_.vbs echo wscript.stdOut.write %s%
cscript /nologo _.vbs <"%~1" >"%~2"
del _.vbs