批处理文件集变量不起作用[重复]

Posted

技术标签:

【中文标题】批处理文件集变量不起作用[重复]【英文标题】:Batch File Set Variable not working [duplicate] 【发布时间】:2013-10-27 05:31:10 【问题描述】:

我正在对 BAT 文件中的变量进行一些简单的设置。它没有设置变量。没有任何奇怪的结构,它是使用相同变量名的简单变量替换。我将 BAT 文件简化为简单的概念证明版本:

set TESTVAR = "No Value"
ECHO var = %TESTVAR%
set TESTVAR = ""
ECHO var = %TESTVAR%
set TESTVAR = "New value"
ECHO var = %TESTVAR%

输出显示 SET 命令似乎都没有工作。我到底在这里想念什么。我多年来一直在编写 BAT 文件,但我以前从未见过这种情况。这是运行此测试的输出:

C:\Users\rs02130\Desktop>test

C:\Users\rs02130\Desktop>set TESTVAR = "No Value"

C:\Users\rs02130\Desktop>ECHO var =
var =

C:\Users\rs02130\Desktop>set TESTVAR = ""

C:\Users\rs02130\Desktop>ECHO var =
var =

C:\Users\rs02130\Desktop>set TESTVAR = "New value"

C:\Users\rs02130\Desktop>ECHO var =
var =
C:\Users\rs02130\Desktop>

我希望第一个和第三个 ECHO 命令显示值“无值”和“新值”。到底是怎么回事?

【问题讨论】:

没有人说过,你应该在 Testvar 和等号之间放置空格。 不确定,但可能需要EnableDelayedExpansion 等号周围的空格...我知道这真的很愚蠢。谢谢。 我刚刚做了同样该死的事情。多么愚蠢。 【参考方案1】:

问题在于等号周围的空格。这应该可以满足您的需求。

set TESTVAR="No Value"
ECHO var = %TESTVAR%
set TESTVAR=""
ECHO var = %TESTVAR%
set TESTVAR="New value"
ECHO var = %TESTVAR%

【讨论】:

以上是关于批处理文件集变量不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥将命令输出定向到变量在批处理文件中不起作用

echo 变量在批处理文件中不起作用

为什么用户的输入值在批处理文件中的代码中不起作用? [重复]

将变量内容回显到文本文件中的批处理脚本[重复]

批处理脚本将变量内容回显到文本文件[重复]

批处理文件执行问题(CALL 不起作用)