在 Windows 命令行上设置变量时避免多余的空格

在 Windows 命令行上设置变量时避免多余的空格

设置这样的变量时:

> set foo=hello && echo test

那么变量 foo 的值包含一个额外的不需要的空格:

> echo "%foo%"
"hello "

我该如何避免这个额外的空间?当我省略该&& echo test部分时它会消失,但我需要&&出于其他原因使用它。

答案1

set foo=hello&& echo test

在这里工作正常,

echo "%foo%"

印刷

"hello"

:)

答案2

你可以这样做

set "foo=hello" && echo test

答案3

正如其他答案所指出的,命令末尾的空格set很重要,因此如果您输入

设置 foo=hello & echo 测试
甚至

设置 foo=hello␣

(其中代表空格), %foo%设置为六个字符的字符串h, e, l, l, o,  

我在将字符串输入到输出文件时也遇到了类似的空格问题echo。毫不奇怪(鉴于上述情况),

echo hello >myfile

将六个字符串h, e, l, l, o,    (加上 CR 和 LF)写入文件,而

echo hello> myfile

不包括空格。但命令行末尾的空格仍然是一个问题。如果出于某种原因,你说

echo hello> myfile␣
然后输出末尾会出现一个空格。当我删除文件名后的空格时,输出末尾的空格就消失了。

很奇怪,但这对我有用。

答案4

set "foo=hello"

这对我在这方面有很大帮助

FOR /f "tokens=2 delims=><" %%a IN ('TYPE %GCV_CONFIG_FILE% ^| FIND "<%GCV_VALUE_NAME%>"') DO SET "%GCV_VARIABLE_NAME%=%%a" && echo %GCV_VARIABLE_NAME%=%%a >> %SessionLOG%

我花了一段时间才弄清楚如何删除变量末尾的空格。希望这对某些人有帮助

相关内容