2011-10-14 68 views
29

我在一個批處理文件運行此命令:」此時出乎意料。「

for %I in (*.txt *.doc) do copy %I c:\test2 

...它不斷返回:

我就是在這個時候意外。

這個錯誤的原因是什麼?

+7

它在正確的地方 – CharlesB

+11

曾經走進一個房間,感覺就像每個人都只是在談論你不是的感覺? – erbaker

+3

這應該在t恤上。 –

回答

44

命令行如果您在批處理/ CMD文件中運行,則需要%標記:

for %%i in (*.txt *.doc) do copy %%i c:\test2 

%變種只在命令行工作。

3

如果從批處理文件中運行,變量需要用兩個百分比符號來表示,如%%I,只使用一個

1

我遇到了一個案例,我從名爲* .cmd的文件中得到這個錯誤。

if %1 EQU "" 

有一次,我把第一個參數的符號引號包圍,警告消息就走了:

if "%1" EQU "" 
1

不是當我試圖訪問的第一個參數批處理命令出現錯誤直接回答問題,但如果您在任何程序,批處理命令等中遇到此消息,那麼它很可能與包含"字符的PATH相關。

例如,在Atom編輯器中,我在設置視圖中收到消息。

"\"GNU was unexpected at this time 

這是由於不同的程序將在我的道路下面的項

...;C:\"Program Files"\"GNU ARM Embedded;..." 

正因爲如此,在讀取antislash字符作爲逃脫了一些程序,這會導致問題,因爲那就不是一個路徑名分隔符,但是一個簡單的字符。

我的解決方案是從PATH中刪除那些",並且一切正常。

...;C:\Program Files\GNU ARM Embedded;... 

PS:我有一個疑問,這是否會影響原來的程序(GNU ARM在這種情況下,嵌入式),也許不支持空格路徑名。如果有更多見解的人可以在評論中澄清,我會更新我的帖子。

希望這有助於