2016-09-28 54 views
2

我想列出一個目錄及其子目錄中的所有.csv文件。它的工作原理很好,當我在cmd終端運行這個命令:爲什麼在shell中的執行會給出批處理腳本執行的不同結果?

for /f %a in ('dir /b /s *.csv') do (echo %a) 

當我把相同的代碼行到(否則爲空)文本文件(.CMD)和運行.cmd文件,它輸出一個空白行,但不列出任何文件。

爲什麼將命令放入腳本中或直接在終端中輸入(一次性輸入)會有什麼區別?

認爲這可能是一個延遲擴展問題,我也試過for /f %a in ('dir /b /s *.csv') do (echo !a!),但是這並沒有列出文件。

任何想法?

回答

2

加倍批處理文件中的百分比符號!

for /f %%a in ('dir /b /s *.csv') do (echo %%a) 
+0

非常感謝!就是這樣! – Joan

+0

for循環變量名從文件運行時得到雙重評估,因此'%%' - >'%'。 '爲/? | findstr「%%」'給出'要在批處理程序中使用FOR命令,請指定%%變量 – LinuxDisciple

相關問題