2016-08-22 22 views
2

我是新來的Windows 10的64位和啓動命令提示符,然後鍵入以下(設置變量,並在同一線路回聲它):爲什麼一個SET不能在同一行的ECHO命令中保留?

H:\>set a="hello" & echo %a% 
%a% 

H:\>set a="hello" & echo %a% 
"hello" 

爲什麼我沒有看到「你好」,我第一次迴應'編輯它?

道歉,如果這是一個基本的問題,我似乎無法在網上找到答案。

+0

第一行不會在'echo'後面清除'a'。嘗試'設置一個=「你好」&回聲%a%&設置「a =」'驗證。 – dxiv

+0

開始命令提示符並鍵入這三個分開的行:'set a =「one」&echo%a%',then'set a =「two」&echo%a%',then'set a =「three」&echo %A%'。然後,查看「延遲擴展」與%正常擴展的差異... – Aacini

+0

相關:[批量文件延遲擴展示例](http://stackoverflow.com/q/10558316) – aschipfl

回答

1

這是因爲該線將在set命令之前被評估,所以在第一次運行%a%將被傳遞爲是(字符串"%a%"因爲a存在)。

評估變量後的第一行看起來像:

set a="hello" & echo hello 

運行的任何命令之前:

set a="hello" & echo %a% 

第二行會進行評估。

相關問題