批处理脚本,逐行在文本文件中查找字符串,然后用另一个字符串替换整行

时间:2013-05-17 16:43:28

标签: batch-file

我想编写一个批处理文件,逐行在文本文件中查找给定的字符串,然后用另一个给定的字符串替换整行。

示例:          有文件text.txt          string_replace = abc          string_replace_with = xyz          如果text.txt中的每一行都包含string_replace,那么该行将被替换为string_replace_with

任何人都可以帮助我吗? 非常感谢

3 个答案:

答案 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