【バッチファイル】指定したフォルダ配下の更新日付が最新のファイルを取得する

バッチファイルで
 ・指定したフォルダ配下の
 ・更新日付が最新のファイルを取得
できます!

PR

コード

ここでは例として
 ・デスクトップにあるフォルダ「test」配下の
 ・「対象ファイル(今回はCSVファイル)」の
 ・更新日付が最新のファイルを取得
します。

「*.csv」で更新日付が最新のファイルは「002.csv」
「*.csv」で更新日付が最新のファイルは「002.csv」
@echo off

rem 対象フォルダ
set targetFolder=C:\Users\user\Desktop\test
rem 対象ファイル
set targetFile=*.csv

rem 対象ファイル数を取得するコマンドを作成
set getFileCountCmd="dir %targetFolder%\%targetFile% /a-d /b | find /c /v """

rem 対象ファイル数を取得
for /f %%a in ('%getFileCountCmd%') do (
    set fileCount=%%a
)

rem 対象ファイルが存在しない場合は処理終了
if %fileCount% equ 0 (
    echo 対象ファイルが存在しないため、処理を終了します。
    echo.
    pause
    exit
)

rem 対象ファイルを(更新日付で降順で)取得するコマンドを作成
set getFileListCmd="dir /a-d /o-d /b %targetFolder%\%targetFile%"

rem 対象ファイルの数だけ繰り返し
for /f %%a in ('%getFileListCmd%') do (
    rem 更新日付が一番新しいファイルを取得
    set latestFile=%%a
    rem for文を抜ける
    goto break
)
:break

echo 更新日付が一番新しいファイル:%latestFile%

echo.
pause
exit

「対象フォルダ」を指定します(4行目)。
「対象ファイル」を指定します(6行目)。

「対象ファイル数」を取得します(9~14行目)。

「対象ファイル数」が存在しない場合は、処理を終了します(17~22行目)。

「対象ファイルを(更新日付で降順で)取得するコマンド」を作成します(25行目)。
※「dir」コマンドのパラメータ「/ad」により、フォルダを対象にします。「」が「not」を示します。
※「dir」コマンドのパラメータ「/od」により、更新日付で降順にします。」が「not」を示します。
※「dir」コマンドのパラメータ「/b」により、「dir」コマンドの結果から余計な情報を除きます。

更新日付が最新のファイル」を取得します(28~34行目)。
※実行するコマンドを「’」で囲みます。
※最初の1ファイル(=更新日付が最新のファイル)を取得直後に、gotoコマンドによりfor文を抜けます。

PR

実行結果

指定したフォルダ配下の更新日付が最新のファイルを取得できました。
※「*.csv」で更新日付が最新のファイルである「002.csv」を取得できました。

実行結果
実行結果
PR

参考①

「対象ファイル数を取得」の詳細は、以下の記事をご確認ください。

PR

参考②

上記で使用した以下の詳細は、公式サイトをご確認ください。

「dir」コマンド


「for」コマンド(forコマンド)


●gotoコマンド