我想寫一個批處理腳本,獲取(除其他外)計算機所有磁盤驅動器的列表。基本代碼看起來是這樣的:爲什麼此批處理腳本中的FOR/f循環評估空行?
REM Build the list of disk drives to monitor
SETLOCAL enabledelayedexpansion
FOR /f "skip=1 tokens=1 delims=:" %%a in ('"WMIC logicaldisk WHERE drivetype=3 GET deviceid"') do (
SET "DISK_DATABASES=!DISK_DATABASES!%%a|"
SET "DRIVES_TO_MONITOR=!DRIVES_TO_MONITOR!%%a:\\|"
)
我相當明顯地建立兩個稍有不同的列表以供稍後使用。當我運行這一點,但是,輸出我得到類似如下:
C|D|E||
C:\\|D:\\|E:\\|:\\|
現在,我希望尾隨管在這兩種情況下,我可以管理,但我真的很困惑,爲什麼有一個額外的在那裏空白的條目。如果我手動運行wmic
命令,我可以看到輸出結尾處確實有一個空行,但我的理解是/f
明確地應該忽略空行。
如果我打開ECHO
,它看起來像最後一行剛剛作爲回車/換行符或類似的進來。有沒有辦法做我期待的事情?我錯過了什麼嗎?我試圖在循環中編寫一個if
條件來排除最後一行,但它是......時髦而且從來沒有工作過。我感謝任何/所有的幫助。
哇,我們的生活和學習,不是嗎?我想知道爲什麼像WMIC這樣的實用程序首先會在一行中生成一個''字符......或者這可能是@matt發現的結果。 –
我想這不是unicode問題,因爲即使在XP中,微軟也不知道自己的行結尾應該如何。 IPconfig(XP)也產生不一致的結局 – jeb
感謝jeb和matt的答案。兩種解決方案都可以工作,但jeb's不需要我創建臨時文件,所以我接受他的。 – Morinar