我想在我的脚本中支持用户输入的变量理解。
>set target=%programdata%
>echo %target%
给我:
C:\ProgramData
然而一切都很好……
>set /p target=
>%programdata%
>echo %target%
给我:
%programdata%
答案1
经过足够长时间的敲击键盘后,我找到了一个适合我的解决方案,用来call
重新评估输入:
>set /p target=
>%programdata%
>call set "target=%target%"
>echo %target%
为我提供了期望的结果:
C:\ProgramData
答案2
要在批处理脚本中继续命令行,可以在行尾使用转义字符,如下所示:
set /p target=^
%programdata%
echo %target%
解释一下这个表述和我的表述之间的区别:
我的公式使第二行成为第一行的延续,以便两者都由 DOS 解释器进行批处理,它还执行变量的扩展。
您的公式允许set /p
读取数据并将其存储到变量中。这不会经过 DOS 解释器,因此变量不会扩展,因此值保持读取时的状态。
您的答案中的方法的作用是强制输入的字符串通过 DOS 解释器,因此变量被扩展,