在使用 Windows 10 的提升命令中,我執行此批次檔:
@echo off
cls
for /f "tokens=1-6 delims=," %%G in ("3D Objects,Documents,Downloads,Music,Pictures,Videos") do (
echo %%G
)
我希望它能列出這六個項目中的每一個。相反,它僅列出第一個(3D 物件),然後停止。使用“Tokens”似乎沒有太大區別,“delims”似乎也沒有像我想的那樣發揮作用。
問題:我是否錯誤地認為FOR
可以處理清單中以逗號分隔的項目?
答案1
我認為它不能像您期望的那樣對非文件列表起作用,因為如 中所示for /?
。 。 。
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters] FOR /F ["options"] %variable IN ("string") DO command [command-parameters] FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
我相信這意味著FOR /F
句柄command
, string
, 或file-set
我認為file-set
具體意味著一個實際文件。如果是這種情況,則意味著將非文件列表放入其中,它被解釋為delims
和tokens
無法解析或迭代的字串。
若要解決將非文件清單放入常規為了不使用任何tokens
or進行循環delims
,並確保包含空格的值用雙引號引起來。
@echo off
cls
for %%G in ("3D Objects",Documents,Downloads,Music,Pictures,Videos) do (
echo %%~G
)
您可以在所有值兩邊加上雙引號,並~
在變數佔位符中使用 [ ] 波形符從輸出值解析出雙引號,從而給出不帶雙引號的所需輸出。
@echo off
cls
for %%G in ("3D Objects","Documents","Downloads","Music","Pictures","Videos") do (
echo %%~G
)
輸出
3D Objects
Documents
Downloads
Music
Pictures
Videos