批处理脚本:Echo未打印变量值

时间:2019-01-14 13:53:28

标签: batch-file

我有一个批处理脚本:

echo on
Set appdir=This is testing for substring : Management\s18vx
ECHO %appdir%

REM get substring i.e, s18vx
Set SubStr = %appdir:~43%
ECHO %SubStr%

cmd /k

获取子字符串后,将其设置为新变量。在Echo上,此变量不打印任何内容。不知道这里出了什么问题。基本上,我想用提取的字符串(在这种情况下为s18vx)填充新变量。

enter image description here

1 个答案:

答案 0 :(得分:1)

一次尝试:

@echo off
set "appdir=This is testing for substring : Management\s18vx"
echo %appdir%

REM get substring i.e, s18vx
Set "SubStr=%appdir:~43%"
echo %SubStr%
pause

=中的空格很重要,您并不真的希望在那里。还要将您的变量用双引号引起来,以消除额外的空格,尤其是在变量字符串之后。

有关set命令的更多帮助,请打开cmd.exe并键入set /?

一些注意事项: 默认情况下,Echo处于打开状态,除非它构成脚本的一部分,在该脚本中较早关闭了Echo,并且您由于某种原因想要将其打开,则无需将其打开。

此外,我建议您是否只想让最终结果变成@echo off,因为echo on几乎就像一个调试函数,它echo是您运行的每个命令,其中{ {1}}将禁用此功能,仅显示最终结果。