我在一個簡單的批處理命令中遇到問題,我無法理解爲什麼「令牌」選項無法正常工作。我想要做的是使用dir命令在批處理文件中列出文件夾的內容,並過濾輸出以僅顯示文件的大小和名稱。還有一個我會將輸出重定向到一個文件。批量令牌問題
例如,包含3個PDF文件的文件夾中執行的默認目錄輸出如下:
Volume in drive C is Windows
Volume Serial Number is 8E72-826A
Directory of C:\Test
16.04.2015 08:36 <DIR> .
16.04.2015 08:36 <DIR> ..
02.07.2014 14:35 428.974 Metrou (2).pdf
02.07.2014 14:35 428.974 Metrou (3).pdf
02.07.2014 14:35 428.974 Metrou.pdf
3 File(s) 1.286.922 bytes
2 Dir(s) 123.298.713.600 bytes free
我試圖獲得如下結果:
428.974 Metrou (2).pdf
428.974 Metrou (3).pdf
428.974 Metrou.pdf
爲了實現我正在嘗試以下代碼:
FOR /f "tokens=3,*" %%G IN ('dir C:\Test\*.* ^| find "pdf"') DO echo %%G >> abo.txt
結果只有大小,我i ŝ確實令牌3,但它應該繼續與剩下的令牌我如何指示:*後3
428.974
428.974
428.974
我也試圖與其他選項「令牌= 3 *」,但具有相同的結果。如果我改變令牌其他號碼2爲例,它正確地顯示了小時在我們的例子:
14:35
14:35
14:35
所以它似乎是閱讀我的令牌選項,但只有=後面的第一個數字。我沒有使用過delims,因爲輸出只有空格,默認情況下這個空格是作爲分隔符讀取的,我也可能在他們的名字中包含空格的文件,就像上面的例子。 此外,代碼將保存在.bat文件中。
任何想法爲什麼它忽略*或*標記?
感謝和問候,
尤利安
'找到 「PDF」 將找到'pdf',但不是'PDF '。你應該使用'/ i'參數。無論如何:你爲什麼使用'find「pdf而不是'dir * .pdf'? – Stephan
這的確更短,謝謝Stephan! – iconstan
Stephan,實際上dir * .pdf會傳遞給輸出,它將被重定向到一個文件,我不需要這些文件。例如:驅動器C是Windows 編號是8E72-826A C:\ Users \%userprofile%\ Desktop和底部的磁盤空間信息:879.104字節 123.234.299.904字節空閒 – iconstan