Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file DOS字符串操作-替换空变量_Batch File - Fatal编程技术网

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

Batch file DOS字符串操作-替换空变量,batch-file,Batch File,我在批处理文件中有以下DOS命令: SET "REALM=" ECHO %REALM:/=.% SET "REALM=Westeros" ECHO %REALM:/=.% SET "REALM=Westeros/" ECHO %REALM:/=.% 最后两个命令提供了预期的结果: 维斯特罗斯 韦斯特罗斯 但是第一种方法是将空变量上的替换为,给出: /=。 为什么会发生这种情况?我如何才能正确执行此操作?如果您设置“REALM=”。然后%Realm%是未定义的(没有任何值)。如果您设置Rea

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

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

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

SET "REALM=Westeros/"
ECHO %REALM:/=.%
最后两个命令提供了预期的结果: 维斯特罗斯 韦斯特罗斯

但是第一种方法是将空变量上的
替换为
,给出:
/=。


为什么会发生这种情况?我如何才能正确执行此操作?

如果您设置“REALM=”。然后
%Realm%
是未定义的(没有任何值)。

如果您设置
Realm=“
。然后
%Realm%
是未定义的(没有任何值)。

如果您设置
Realm=“
。然后
%Realm%
是未定义的(没有任何值)。

如果您设置
Realm=“
。然后,
%Realm%
是未定义的(没有任何值)。

这是未定义变量的解析器的问题/功能

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

另见

要解决这个问题,您需要首先测试未定义的变量,如

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

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

这是未定义变量的解析器的问题/特性

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

另见

要解决这个问题,您需要首先测试未定义的变量,如

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

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

这是未定义变量的解析器的问题/特性

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

另见

要解决这个问题,您需要首先测试未定义的变量,如

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

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

这是未定义变量的解析器的问题/特性

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

另见

要解决这个问题,您需要首先测试未定义的变量,如

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


我在这里使用了
echo(
以避免“echo关闭”的输出当变量为空时。

我知道变量未定义,但为什么替换返回/=。而不是空字符串或无?我知道变量未定义,但为什么替换返回/=。而不是空字符串或无?我知道变量未定义,但为什么替换返回/=。而不是空字符串或无空字符串或无?我知道变量未定义,但为什么替换返回/=。而不是空字符串或无?当您尝试从不存在的值替换字符时,“预期结果”是什么?使用未定义的
%REALM%
ECHO%REALM://=。%%
给我
%REALM://=。%%
(如我所料)不是
/=。
(在cmd.exe上;我再也没有可用的DOS)我希望结果是“”或什么都没有。当您尝试替换不存在的值中的字符时,“预期结果”是什么?对于未定义的
%REALM%
ECHO%REALM:/=。%
给我
%REALM:/=。%code>(如我所料)不是
/=。
(在cmd.exe上;我再也没有可用的DOS)我希望结果是“”或什么都没有。当您尝试替换不存在的值中的字符时,“预期结果”是什么?对于未定义的
%REALM%
ECHO%REALM:/=。%
给我
%REALM:/=。%code>(如我所料)不是
/=。
(在cmd.exe上;我再也没有可用的DOS)我希望结果是“”或什么都没有。当您尝试替换不存在的值中的字符时,“预期结果”是什么?对于未定义的
%REALM%
ECHO%REALM:/=。%
给我
%REALM:/=。%code>(如我所料),而不是
/=。
(在cmd.exe上;我再也没有可用的DOS)我希望结果是“”或什么都没有。因此,据我所知,如果领域未定义,那么命令行处理器将从命令行中删除%REALM:,留下“/=”然后继续扫描。因此,为了解决这个难题,我必须定义一个空变量,但我不能,以获得预期的结果。是的,只有在定义了变量时替换才有效,否则它会失败,并且您会得到rubbishSo,据我所知,如果REALM未定义,那么命令行处理器将从命令行中删除%REALM:,lea“/=”然后继续扫描。因此,为了解决这个难题,我必须定义一个空变量,但我不能,以获得预期的结果。是的,只有在定义了变量时替换才有效,否则它会失败,并且您会得到rubbishSo,据我所知,如果REALM未定义,那么命令行处理器将从命令行中删除%REALM:,lea“/=”然后继续扫描。因此,为了解决这个难题,我必须定义一个空变量,但我不能,以获得预期的结果。是的,只有在定义了变量时替换才有效,否则它会失败,并且您会得到rubbishSo,据我所知,如果REALM未定义,那么命令行处理器将从命令行中删除%REALM:,leaving“/=”并继续扫描。因此,为了解决这个难题,我必须定义一个空变量,但我不能,以获得预期的结果。是的,只有在定义了变量后替换才有效,否则它会失败,你会得到垃圾