2013-09-22 52 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

相關問題