首页 > 解决方案 > 批处理脚本:Echo 未打印变量值

问题描述

我有一个批处理脚本:

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。

在此处输入图像描述

标签: batch-file

解决方案


试试这个:

@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 variable = value因此将变为%variable %and value

还要将变量用双引号括起来以消除额外的空格,尤其是在变量字符串之后。

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

一些旁注:默认情况下,Echo 是打开的,除非这构成了脚本的一部分,其中 echo 早些时候被关闭并且您出于某种原因想要打开它,您不需要打开它。

另外,我建议如果您只想要最终结果,@echo off因为echo on它几乎就像一个调试功能,它echo是您运行的每个命令,其中echo off将禁用它并仅显示最终结果。


推荐阅读