
私のハードディスクには、特定のテキスト ファイル (Tracker.txt) が含まれる可能性のあるサブフォルダーが毎日何百も作成されます。
完全なパスを持つ最新の tracker.txt ファイルという 1 つの結果のみを取得するコマンドラインまたは BAT ファイルを作成したいと思います。
試してみましたdir /s tracker.txt /OD
が、結果は日付でフィルタリングされません。
ありがとう!
答え1
DIR /B /S /OD "tracker.txt"
コマンドの結果を一時ログ ファイルにパイプすることができますが、FOR
ループ置換を使用して、名前に一致する各ファイルの日付タイムスタンプ、その後にコンマ、完全な明示的なパスとファイル名 (つまり ) を配置しますYYYY-MM-DD hh:mm [AM/PM]
。
次に、SORT
そのファイルに対してコマンドを使用して、そのファイル内のすべての行を新しいソート済みファイルにソートしますが、最新のタイムスタンプ ファイルがリストの一番下に配置されます。
FOR
最後に、カンマを区切り文字として使用して最終ファイル リストの最終ループを実行し、そのループ内の反復変数を各完全明示パスにのみ設定します。リストの一番下に到達すると、これが最後の最新ファイルになりSET
ます。その後、再帰的に指定したすべてのディレクトリ内から、日付スタンプに関して最新のファイルである最後に設定された変数を使用して、何かを行うことができます。
バッチ スクリプトの例
変数の値は、SET StartDir=
ファイルを再帰的に検索するための DIR コマンドが開始されるルート フォルダーに設定してください。
@ECHO ON
SET StartDir=C:\Users\User\Desktop\Test
IF EXIST "%temp%\~dir1temp.dat" DEL /Q /F "%temp%\~dir1temp.dat"
FOR /F "TOKENS=*" %%A IN ('Dir /B /S /OD "%StartDir%\tracker.txt"') DO ECHO %%~TA, %%~FPNXA>>"%temp%\~dir1temp.dat"
IF EXIST "%temp%\~dirsorttemp.dat" DEL /Q /F "%temp%\~dirsorttemp.dat"
SORT "%temp%\~dir1temp.dat">>"%temp%\~dirsorttemp.dat"
FOR /F "TOKENS=2 DELIMS=," %%A IN (%temp%\~dirsorttemp.dat) DO (SET File=%%~A)
ECHO %File%
:::<command to do something with %file%>
PAUSE