我想寫一個批處理文件,需要一些參數,其後是一個或多個可選的文件名(可能包含通配符),並且在某些時候處理每個可選文件名,但for
命令不斷嘗試擴展他們,所以即使只是印刷他們也無濟於事。防止Windows命令解釋程序(FOR)將列表視爲通配符?
我檢查了幫助(for /?
),但似乎沒有任何開關來防止這種情況發生。我嘗試使用單引號,雙引號和後引號以及/f
,但似乎沒有任何效果。
正如人們所期望以下命令作品:
> for %i in (foo bar baz) do @echo %i
foo
bar
baz
下面的命令並不:
> for %i in (foo bar baz really?) do @echo %i
foo
bar
baz
下,更不能:
> ren > reallyz
The syntax of the command is incorrect.
> dir /b really*
reallyz
> for %i in (foo bar baz really?) do @echo %i
foo
bar
baz
reallyz
是否有讓Windows命令解釋器將傳遞的列表視爲字符串,而不是試圖將其解釋爲fil羨慕通配符?
你有沒有試着用插入符號逃逸問號「^」作爲(FOO酒吧巴茲真的^?),你可能用它去撥弄作爲轉義字符的視窗想法是令人費解的,似乎改變時在命令行上運行vs從批處理文件運行。 – JimR
是的,轉義它不起作用(除此之外,即使它已經做到了,那麼當調用批處理文件時,用戶必須記住要跳過它們,這當然是非理想的界面,因爲它與其他傳遞的使用不一致文件名)。 – Synetech