我是批处理脚本的新手,并搜索了所有可用的资料,但我没有得到满意的答案。
我有一个名为 find_str 的字符串,其中包含以下内容
替换开发中给出的url的baseUrl:{发展: “https://myserver.example:1234”}
所以输出应该看起来像
的baseUrl:{发展: “http://localhost:8084”}
我有一个名为
的变量find_string,其中包含https://myserver.example:1234和一个名为
的变量 的replacestr我已提及此网站Replace a substring using string substitution
但是要替换的字符串是硬编码的,我希望替换字符串来自上面给出的变量,并希望将整个结果存储在第三个变量中。
我尝试了以下内容:
setlocal ENABLEDELAYEDEXPANSION
For /F "tokens=1* delims==" %%A IN (environment.properties) DO (
IF "%%A"=="url" set replacestr=%%B
)
set /p find_str=<%~dp0application\app\common\common.config.js
set cmd="echo %find_str:~92,37%"
FOR /F "tokens=*" %%i IN (' %cmd% ') DO SET find_string=%%i
echo !find_string!
echo !replacestr!
break>%~dp0portfolio-analyzer\app\common\common.config.js
set _result=%find_str:=!replacestr!%
>> %~dp0portfolio-analyzer\app\common\common.config.js echo %_result%
pause
但它并没有用它的值替换find_str。
提前致谢。
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
SET "find_str=baseUrl:{development:"https://myserver.example:1234"}"
SET "replacestr=http://localhost:8084"
SET "critical_str=%find_str:*"=%"
:: don't know whether we need to simply remove the last 2 chars
:: or replace both `"` and `}` with nothing
SET "critical_str=%critical_str:"=%"
SET "critical_str=%critical_str:}=%"
SET "original_str=%find_str%"
:: replace colons
SET "critical_str=%critical_str::=`%"
SET "original_str=%original_str::=`%"
CALL set "result_str=%%original_str:%critical_str%=%replacestr%%%"
:: substitute-back
SET "result_str=%result_str:`=:%"
set|FIND /i "str="
GOTO :EOF
这不是一个简单的问题。它涉及:
的体操,以防止:
被不恰当地解释。
现在我有几秒钟的时间思考......
:: Using delayedexpansion
SETLOCAL ENABLEDELAYEDEXPANSION
SET "critical_str=%find_str:*"=%"
SET "critical_str=%critical_str:~0,-2%"
SET "result_str=!find_str:%critical_str%=%replacestr%!"
set|FIND /i "str="