0

約 50 個のサブフォルダー (、、... など) を含むフォルダーが0001あり00020003それぞれに数百のファイル (、、... など) が含まれています0001_132.txt0002_312.txtバッチ0032_152.txtファイルを実行して、処理していないファイルを抽出する必要があります。バッチ ファイルの最後の実行以降。

私が現在行っている方法は.txt、最後の更新中に抽出された最後のファイルのファイル名を教えてくれるファイルを保存することです。次にバッチ ファイルを実行すると、その特定のファイル名に到達するまでサブフォルダーをループし、その特定のファイルよりも新しいファイルの抽出を開始します。

私のやり方が良いかどうかはわかりませんが、うまくいきます。ただし、フォルダーに多くのファイルがあるため、バッチファイルが新しいファイルを抽出する前にすべての古いファイルを読み取るたびに、プログラムがかなりの時間実行されます。それで、これらの古いファイルをループしない方法があるかどうかお尋ねしたいと思いますか?

最後に更新されたファイルを記録するファイルは次のようになります。

last_update.txt: format([subfoldername]_[file].txt)

例: 0001_134 0002_213 。. 0050_241

私のバッチは次のようになります。

for /f %%a in (C:\last_update.txt) do (
  set number=%%a
  set "subfolder=!number%:~0,4!"
  set reach=0
  for /f %%x in (c:\data\subfolder\)  do (
    if %%~nx==!number! (
      set reach=1
    )
    if not %%~nx==!number! if !reach!==1 (
      DO THE EXTRACTION
    )
    set latest_File=%%~nx
  )
  echo !latest!>>last_update_temp.txt
)

del last_update.txt
ren last_update_temp.txt last_update.txt
4

1 に答える 1