替换批处理文件中的字符串

时间:2014-05-12 10:55:34

标签: batch-file

我在使用Batch

替换字符串insd .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

任何帮助都是适当的

1 个答案:

答案 0 :(得分: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