我發現批處理腳本的一個奇怪問題,我似乎無法解釋。也許它只是因爲我不知道有足夠的瞭解批次如何工作的基礎,但這裏有一個例子批處理文件(test.bat的):這是Windows批處理中的錯誤嗎?
@echo off
FOR /F "tokens=1*" %%i in ("%*") DO (
echo %%j
)
,如果我把它像這樣:
test.bat ab a,b "a,b"
我得到這個作爲我的輸出:
a,b "a b"
爲什麼第二個逗號被剝離?如果我逃跑,像這樣的逗號:
test.bat ab a,b "a^,b"
我得到正確的輸出:
a,b "a,b"
這幾乎就像「」被認爲是一個分隔符的for循環,但是當我看到FOR/?,唯一的默認delim是空白。逗號不作爲分隔符列出。如果我明確指出delim是一個空格,我仍然會得到這種行爲。如果我逃避報價,我仍然會得到這種行爲。無論如何,如果逗號是一個分隔符,第一個逗號也應該被剝離出來嗎?奇怪的是,如果你嘗試在for循環中使用'usebackq',你會得到完全相反的結果。第一個逗號剝離出來,第二個被保留:
a b "a,b"
爲什麼我必須逃脫,引號裏的所有逗號這個工作?是否有一些whindows規則我失蹤或者它只是Windows批處理腳本中的錯誤?
您的代碼給出錯誤C:\ Temp> test.bat ab a,b「a,b」 a,b「a b」 系統找不到文件ê♠。 –