找到特定字符串后的字符串替换的批处理脚本

时间:2015-08-14 10:08:56

标签: regex windows string batch-file command-line

我需要使用批处理脚本替换文本文件中的字符串。字符串是:

these are the url's http://somename http://somename http://somename:1010

现在在上面一行我需要用someone替换anything,以便输出

these are the url's http://anything http://anything http://anything:1010

但是包含以下字符串的文本文件存在于服务器

these are the url's http://somename http://somename http://somename:1010

我不知道字符串someone!目标是http://之后出现的任何内容,它需要替换为新字符串(anything),直到它找到同一行中的另一个http://。 到目前为止,我能够编写如下的脚本,但是无效。

setlocal ENABLEDELAYEDEXPANSION
@echo off

@set INFILEPATH=E:\PathofTxtFile\
@set INTEXTFILE=Filetomodify.txt
@set OUTTEXTFILE="E:\PathofTxtFile\Filetomodify.txt"    
@set OLDTEXT=http://*
@set OUTPUTLINE=   
@set NEWTEXT=anything

echo %NEWTEXT%

@IF EXIST "%OUTTEXTFILE%" (
GOTO MODIFYFILE
) ELSE (
GOTO COPYFILE
)

:MODIFYFILE
for /f "tokens=1,* delims=¶" %%A in ( '"findstr /n ^^ %INFILEPATH%%INTEXTFILE%"') do (
SET string=%%A
for /f "delims=: tokens=1,*" %%a in ("!string!") do set "string=%%b"
if  "!string!" == "" (
    echo.>>%OUTTEXTFILE%
) else (
    SET modified=!string:%OLDTEXT%=http://%NEWTEXT%!
    echo !modified! >> %OUTTEXTFILE%
)
)
del %INFILEPATH%%INTEXTFILE%
rename %OUTTEXTFILE% %INTEXTFILE%

:COPYFILE
@xcopy "C:\TempPath\FileToModify.txt" "INFILEPATH" /Q /Y

此脚本不会更改文本文件中的任何行。请任何人都可以建议我如何达到上述标准。 提前谢谢。

0 个答案:

没有答案