4

ワイルドカードの使用を好まない cli アプリケーションがあります。この例では、*.dat. ファイルが無効であるというエラーが表示されます*.dat

このツールで処理する必要がある何千ものファイルを含むフォルダーがあります。したがって、手動で行うことはできません。この問題が発生したアプリケーションはかなりありましたが、今回はかなり重要です。これらのアプリケーションを処理する一般的な解決策は非常に優れています。

すべてのファイルのファイル リストを*.dat作成して、アプリケーションにフィードすることはできますか? バッチ スクリプトを使用する必要はありませんが、これまでのところ最も単純なソリューションのように思えました。

4

1 に答える 1

5

forループを使用できます:

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

これにより、ファイルごとにコマンドが 1 回開始されます。それらを集約したい場合は、もう少し作業を行う必要があります。

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 個のファイルがコマンドに渡されます。必要に応じて、その数を微調整できます。問題は、フォルダーに何千ものファイルがある場合、(コマンド ラインの最大長の制限があるため) 単一のコマンド ラインでそれらすべてを単純にリストすることができないため、それらをチャンクで処理する必要があることです。

于 2012-06-26T20:15:04.363 に答える