【发布时间】:2012-04-10 22:35:18
【问题描述】:
[目的]
这个简单的命令序列在 Windows 的 CMD shell 中运行:
dir & echo hello
将列出文件和目录并回显字符串。
但是,以下命令序列没有按预期运行(至少对我来说):
C:\Users\Administrator>set name=value & echo %name%
%name%
C:\Users\Administrator>echo %name%
value
C:\Users\Administrator>
我们可以看到,第一个echo无法获取环境。你能帮忙评论一下吗?任何评论将不胜感激!
PS:操作系统:Windows 7 X64 Home Pre
【问题讨论】:
-
您的简单实验证明 Windows cmd-line-evaluation(与大多数 shell 程序一样)无法传播对同一处理行上的变量所做的分配。很高兴您在很短的时间内就发现了这个*功能*/限制。除非您的 cmd 环境包含类似 Unix shell
eval的东西,否则您必须将两个 cmd 放在单独的行上,即set name=value换行echo %name%。祝你好运。 -
@shellter - 不太正确。确实,%name% 在设置的同一行时不会给出当前值,但延迟扩展会。
-
@dbenham :感谢您提供的信息,关于 Windows cmd,我还有很多不知道的地方。这就是为什么我将此作为评论留下的原因,您的答案看起来很全面。感谢分享。 +1!
-
@shelter - 也许您现在应该删除不正确的 cmets?
标签: windows command-line cmd