批量,用延迟扩展参数替换延迟扩展字符串

时间:2017-01-07 05:37:42

标签: batch-file replace cmd window

基本上我只是使用这个部分替换我的var中的字符串,但是我无法通过嵌套延迟扩展来正常工作。这甚至可能吗?

set replace=!replace:!search!=!replaceVal!!

我知道它被执行时会发生什么。它在第一个完整集合之后停止,它将是set replace=!replace:!,然后它会尝试执行最后一部分,但有没有办法逃脱它们以便它能正确地得到我的结果?

3 个答案:

答案 0 :(得分:1)

[实施例]

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET "search=aaa"
SET "replace=jjj"
IF DEFINED search (
 SET "replace=xxxbbbyyybbbhhh"
 SET "search=bbb"
 SET "replaceval=kkk"
 SET REPLACE
 ECHO after...
 CALL SET "replace=%%replace:!search!=!replaceval!%%"
 SET replace
)

GOTO :EOF

答案 1 :(得分:1)

只要#include <string.h> search值没有空格,就可以使用

replace

如果这些变量有空格,只需插入适当的分隔符:

for /F "tokens=1,2" %%a in ("!search! !replaceVal!") do set replace=!replace:%%a=%%b!

答案 2 :(得分:1)

我认为最安全的方法如下:

npm install

因此,唯一剩下的限制是那些适用于子字符串替换语法的限制。