2012-06-26 34 views
4

我有一個不喜歡使用通配符的cli應用程序。在這個例子中使用*.dat。我只是收到文件*.dat無效的錯誤。如何使用需要特定文件名的CLI工具在批處理腳本中使用通配符?

我有一個文件夾,需要使用此工具處理數千個文件。所以手動做是不行的。我遇到了很多應用程序,在這個問題上我有這個問題,但這次它非常重要。如何處理這些應用程序的一般解決方案將非常好。

我可以製作所有*.dat文件的文件列表並將其提供給應用程序? 我沒有必要使用批處理腳本,但它似乎是目前爲止最簡單的解決方案。

+0

你在使用什麼操作系統?我假設Windows,因爲你正在談論「批處理」腳本。你應該在你的問題中指定這個,或者適當地標記它。加入了 – kevlar1818

+0

但是問題也得到了很好的迴應:) 我想這已經夠明顯了。 – PTS

+1

只是在SO和SU上的良好做法,以聲明您的操作系統和/或編程語言 – kevlar1818

回答

5

您可以使用for循環:

for %%x in (*.dat) do mycommand "%%x" 

這將立即開始這項命令爲每個文件。如果你想聚合它們,你必須做更多的工作:

setlocal enabledelayedexpansion 
set Count=0 
set List= 
for %%x in (*.dat) do (
    set List=!List! "%%x" 
    set /a Count+=1 
    if !Count! GEQ 50 (
    mycommand !List! 
    set List= 
    set Count=0 
) 
) 

這會一次傳遞50個文件到命令。如果需要,您可以調整該號碼。問題是如果文件夾中有成千上萬的文件,那麼你不能簡單地將它們列在一個命令行中(因爲存在最大的命令行長度限制),所以你必須以塊的形式處理它們。

+0

謝謝,完美的作品! 感謝另一位,我有一個案例,我會有很大的用處。絕對要保存! :) – PTS

相關問題