バッチファイル(ファイル操作_4_ファイルサイズ確認2)

■指定のファイルサイズより大きいものだけ表示させる。
前回のバッチに少し手を加えて、ファイルサイズが大きいものだけを表示させるようにした。
バッチのコードは下の通り。

echo off

set /a n=0
set /a SHOW_MORETHAN_FILESIZE=100

setlocal enabledelayedexpansion 
for /f "delims=" %%A in ('dir %1 /s /b /a-d') do (
  set "line[!n!]=%%A"
  set /a n=n+1
)

set /a n=n-1
set /a l=0
for /l %%m in (0,1,%n%) do (
  for /f "delims=" %%A in ('"dir /-C !line[%%m]! | find "2022""') do (
     set filesize[!l!]=%%A
     set /a l=l+1
  )
)

set /a l=l-1
for /l %%m in (0,1,%l%) do (
   set tempfile=!filesize[%%m]:~17,18!
   if !tempfile! gtr %SHOW_MORETHAN_FILESIZE% (
     echo !filesize[%%m]!
   )
)

上のほうで表示させるファイルのバイト数を指定し、if文でdirで表示させたバイト数とこの値を比較して、ファイルサイズが超える場合だけ、echoで表示させる。

dirを使うと下のような構成で出てくるため、この中のファイルサイズの部分だけ文字列操作で抽出している(時間の部分までで17桁、そこから18桁分までを抽出)。

1バイト、100バイト、900バイトで値だけを変えてFolder3配下のファイルを確認すると下のような結果となった。

バイトに応じて正しく動いているよう。

このサンプルフォルダ程度なら問題ないけど、あまり上層のフォルダを指定すると処理に時間がかかるので、動いているのか、不具合があって止まっているのかよく分からない。進捗を確認する方法とかないものかな。