我在使用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
任何帮助都是适当的
答案 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