2013-09-22 71 views
0

我编写了此脚本来替换文件中的行,但花费了很长时间。有没有办法加快速度?使用批处理文件替换update.ver中的文本

@echo off 
setlocal DisableDelayedExpansion 
set INTEXTFILE=update.ver 
set OUTTEXTFILE=update.txt 
set SEARCHTEXT=93.184.71.27 
set REPLACETEXT=93.184.72.27 
set OUTPUTLINE= 

for /f "tokens=1,* delims=¶" %%A in ('"type %INTEXTFILE%"') do (
    SET string=%%A 
    setlocal EnableDelayedExpansion 
    SET modified=!string:%SEARCHTEXT%=%REPLACETEXT%! 

    >> %OUTTEXTFILE% echo(!modified! 
    endlocal 
) 
del %INTEXTFILE% 
rename %OUTTEXTFILE% %INTEXTFILE% 





@echo off 
setlocal DisableDelayedExpansion 
set INTEXTFILE=update.ver 
set OUTTEXTFILE=update.txt 
set SEARCHTEXT=91.228.167.26 
set REPLACETEXT=91.227.167.26 
set OUTPUTLINE= 

for /f "tokens=1,* delims=¶" %%A in ('"type %INTEXTFILE%"') do (
    SET string=%%A 
    setlocal EnableDelayedExpansion 
    SET modified=!string:%SEARCHTEXT%=%REPLACETEXT%! 

    >> %OUTTEXTFILE% echo(!modified! 
    endlocal 
) 
del %INTEXTFILE% 
rename %OUTTEXTFILE% %INTEXTFILE% 





@echo off 
setlocal DisableDelayedExpansion 
set INTEXTFILE=update.ver 
set OUTTEXTFILE=update.txt 
set SEARCHTEXT=91.228.166.13 
set REPLACETEXT=91.227.166.13 
set OUTPUTLINE= 

for /f "tokens=1,* delims=¶" %%A in ('"type %INTEXTFILE%"') do (
    SET string=%%A 
    setlocal EnableDelayedExpansion 
    SET modified=!string:%SEARCHTEXT%=%REPLACETEXT%! 

    >> %OUTTEXTFILE% echo(!modified! 
    endlocal 
) 
del %INTEXTFILE% 
rename %OUTTEXTFILE% %INTEXTFILE% 





@echo off 
setlocal DisableDelayedExpansion 
set INTEXTFILE=update.ver 
set OUTTEXTFILE=update.txt 
set SEARCHTEXT=91.228.166.15 
set REPLACETEXT=91.227.166.15 
set OUTPUTLINE= 

for /f "tokens=1,* delims=¶" %%A in ('"type %INTEXTFILE%"') do (
    SET string=%%A 
    setlocal EnableDelayedExpansion 
    SET modified=!string:%SEARCHTEXT%=%REPLACETEXT%! 

    >> %OUTTEXTFILE% echo(!modified! 
    endlocal 
) 
del %INTEXTFILE% 
rename %OUTTEXTFILE% %INTEXTFILE% 

请帮我

+0

你忘了告诉我们,什么问题是! – jeb

回答

1
@ECHO OFF &SETLOCAL 

set "INTEXTFILE=update.ver" 
set "OUTTEXTFILE=update.txt" 
set "SEARCHTEXT1=93.184.71.27" 
set "REPLACETEXT1=93.184.72.27" 
set "SEARCHTEXT2=91.228.167.26" 
set "REPLACETEXT2=91.227.167.26" 
set "SEARCHTEXT3=91.228.166.13" 
set "REPLACETEXT3=91.227.166.13" 
set "SEARCHTEXT4=91.228.166.15" 
set "REPLACETEXT4=91.227.166.15" 

(for /f "delims=" %%A in ('type "%INTEXTFILE%"') do (
    SET "string=%%A" 
    setlocal EnableDelayedExpansion 
    SET "modified=!string:%SEARCHTEXT1%=%REPLACETEXT1%!" 
    SET "modified=!modified:%SEARCHTEXT2%=%REPLACETEXT2%!" 
    SET "modified=!modified:%SEARCHTEXT3%=%REPLACETEXT3%!" 
    SET "modified=!modified:%SEARCHTEXT4%=%REPLACETEXT4%!" 
    echo(!modified! 
    endlocal 
))>"%OUTTEXTFILE%" 

move "%OUTTEXTFILE%" "%INTEXTFILE%" 
+0

坦克你,工作你的脚本 –

2

你可以用我FindRepl.bat程序文件只是一个处理途径来实现多个字符串替换。例如:

@echo off 
setlocal 
set INTEXTFILE=update.ver 
set OUTTEXTFILE=update.txt 
set "SEARCHTEXT=93\.184\.71\.27|91\.228\.167\.26|91\.228\.166\.13|91\.228\.166\.15" 
set "REPLACETEXT=93\.184\.72\.27|91\.227\.167\.26|91\.227\.166\.13|91\.227\.166\.15" 
call FindRepl "%SEARCHTEXT%" /A "%REPLACETEXT%" < %INTEXTFILE% > %OUTTEXTFILE% 
del %INTEXTFILE% 
rename %OUTTEXTFILE% %INTEXTFILE% 

的/在FindRepl开关表明,这两个搜索和替换串具有由垂直条分离的几个值。

FindRepl.bat是一个Batch-JScript混合程序,运行速度比任何纯Batch解决方案都快;你不需要任何额外的东西来使用它,只需从this site下载它

+0

不行,新文件大小为0kb –

+0

@MortezaKhodadadi:Ops,我的错!我忘了在每个点之前插入一个反斜杠!这是正则表达式所需要的...请复制上面的批处理程序 – Aacini

相关问题