我有一個不喜歡使用通配符的cli應用程序。在這個例子中使用*.dat
。我只是收到文件*.dat
無效的錯誤。如何使用需要特定文件名的CLI工具在批處理腳本中使用通配符?
我有一個文件夾,需要使用此工具處理數千個文件。所以手動做是不行的。我遇到了很多應用程序,在這個問題上我有這個問題,但這次它非常重要。如何處理這些應用程序的一般解決方案將非常好。
我可以製作所有*.dat
文件的文件列表並將其提供給應用程序? 我沒有必要使用批處理腳本,但它似乎是目前爲止最簡單的解決方案。
我有一個不喜歡使用通配符的cli應用程序。在這個例子中使用*.dat
。我只是收到文件*.dat
無效的錯誤。如何使用需要特定文件名的CLI工具在批處理腳本中使用通配符?
我有一個文件夾,需要使用此工具處理數千個文件。所以手動做是不行的。我遇到了很多應用程序,在這個問題上我有這個問題,但這次它非常重要。如何處理這些應用程序的一般解決方案將非常好。
我可以製作所有*.dat
文件的文件列表並將其提供給應用程序? 我沒有必要使用批處理腳本,但它似乎是目前爲止最簡單的解決方案。
您可以使用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個文件到命令。如果需要,您可以調整該號碼。問題是如果文件夾中有成千上萬的文件,那麼你不能簡單地將它們列在一個命令行中(因爲存在最大的命令行長度限制),所以你必須以塊的形式處理它們。
謝謝,完美的作品! 感謝另一位,我有一個案例,我會有很大的用處。絕對要保存! :) – PTS
你在使用什麼操作系統?我假設Windows,因爲你正在談論「批處理」腳本。你應該在你的問題中指定這個,或者適當地標記它。加入了 – kevlar1818
但是問題也得到了很好的迴應:) 我想這已經夠明顯了。 – PTS
只是在SO和SU上的良好做法,以聲明您的操作系統和/或編程語言 – kevlar1818