2014-03-07 96 views
0

当我键入:我使用CMD使用批处理脚本错误吗?

set hi=Hello World 
echo %hi% 
echo hi is "%hi%" 

和运行,我应该看到 “Hello World”, “喜是 ”Hello World“ 的” 对吧?

但是我收到了这条消息“”,嗨是“”

什么?发生在我身上的事情。

有谁知道如何解决这个问题?

我是蝙蝠脚本的新手请帮助我。

更新,这是我所有的

@echo off 
setlocal enabledelayedexpansion 
for /r %%G in ("T00 ?.mp3") do (
set hi=Hello World 
echo %hi% <------ this I got echo is off 
echo hi is "%hi%" 
pause 
) 

它已经在环获得。

+0

你确实应该得到你所期望的,但是你向我们展示的代码不会产生你所报告的内容。剪切并粘贴您的确切代码非常重要 - 不要重新输入。我怀疑你实际上有'set hi = Hello World/echo“%hi%”/ echo hi是“%hi%”' – Magoo

+0

[link](http://superuser.com/questions/725918/how-to-rename -file-using-cmd-track-mp3-to-t00-mp3)是我想要做的,但我认为我所有的变量都是emty。 – Zen3515

回答

1

标准问题。

在块语句(a parenthesised series of statements),所述整个块被解析并然后执行。该块内的任何%var%将在该块被解析时由该变量的值取代 - 在块执行之前 - 同样的事情适用于FOR ... DO (block)

@echo off 
setlocal enabledelayedexpansion 
for /r %%G in ("T00 ?.mp3") do (
set hi=Hello World 
echo !hi! 
echo hi is "%hi%" at the start of the loop, but !hi! if it is changed in the loop 
pause 
) 

注意,当您使用SETLOCAL ENABLEDELAYEDEXPANSION打开延迟扩展 ON,VAR%接入%时解析和!VAR值! 运行时间值。

由于hi没有定义当循环开始,看到的命令是ECHO,所以cmd报道echo statusecho is OFF)(你没有告诉我们原本。)

如果使用ECHO 成喜%,那么你会发现,ID hi是空的,ECHO会什么都不显示(即只产生一个空行)

而且还显示张贴您使用的是确切的代码的重要性...