DOS字符串操作 - 替换空变量

时间:2014-09-04 10:49:30

标签: batch-file

我在批处理文件中有以下DOS命令:

SET "REALM="
ECHO %REALM:/=.%

SET "REALM=Westeros"
ECHO %REALM:/=.%

SET "REALM=Westeros/"
ECHO %REALM:/=.%

最后两个命令给出了预期的结果: 维斯特洛 维斯特洛。

但是第一个,在空变量上替换/ .,给出: /=.

为什么会发生这种情况,我该如何做到这一点?

2 个答案:

答案 0 :(得分:3)

这是具有未定义变量的解析器的问题/特征。

Windows命令解释器(CMD.EXE)如何解析脚本?

另见How does the Windows Command Interpreter (CMD.EXE) parse scripts?

要解决此问题,您需要首先测试未定义的变量,例如。

set "REALM="
if defined REALM SET "REALM=%REALM:/=.%"
echo( %REALM%

我在这里用echo(来避免变量为空时输出“ECHO IS OFF”。

答案 1 :(得分:0)

如果你制作SET "REALM="。然后%Realm%未定义(没有任何值)。