2014-05-12 66 views
0

我有與批量替換字符串insde的.txt文件的麻煩的刀頭更換字符串在批處理文件

我現在已經是這個

:SetHostName 

set /p HostName=Please Enter your hostname: 

setlocal enabledelayedexpansion 
set oldstring=%FTP_HOST% 
set newstring=%HostName% 

for /f "tokens=*" %%i in (FTPConfig.ini) do (
    set str=%%i 
    set str=!str: %oldstring% = "hi"! 
    echo !str! 
) 

但當我不會測試它更換FTP_HOST相反,它顯示了這個

FTP_HOST=test 
FTP_USER=hi 
FTP_PASS=testing 
FTP_PROGRAM_FOLDER=program 
FTP_RESOURCE_FOLDER=resource 

inside my .txt file i have this 
FTP_HOST=test 
FTP_USER=hi 
FTP_PASS=testing 
FTP_SERVER_FILE_LOCATION=program 
FTP_SERVER_RESOURCE_LOCATION=resource 

任何幫助將appriciated

回答

0

我認爲你有這個倒退。此代碼似乎試圖替換實際文本FTP_HOST,而不是後面顯示的值。如果固定明顯的錯誤,你必須:

set oldstring=FTP_HOST 
set newstring=%HostName% 

for /f "tokens=*" %%i in (FTPConfig.ini) do (
    set str=%%i 
    set str=!str:%oldstring%=%newstring%! 
    echo !str! 
) 

假設我進入my.new.host,這將使輸出:

my.new.host=test 
FTP_USER=hi 
FTP_PASS=testing 
FTP_PROGRAM_FOLDER=program 
FTP_RESOURCE_FOLDER=resource 

我真的不認爲這是你的原意。你可能想是這樣的:

set oldstring=FTP_HOST 
set newstring=%HostName% 

for /f "tokens=1,2* delims==" %%i in (FTPConfig.ini) do (
    set str=%%j 
    if "%%i"=="%oldstring%" set str=%newstring% 
    echo %%i=!str! 
) 

其中產量:

FTP_HOST=my.new.host 
FTP_USER=hi 
FTP_PASS=testing 
FTP_PROGRAM_FOLDER=program 
FTP_RESOURCE_FOLDER=resource