
在我的硬碟上,我每天創建數百個子資料夾,其中可能包含特定的文字檔案 (Tracker.txt)。
我想建立一個 cmdline 或 BAT 檔案來只取得一個結果,即最新的 tracker.txt 檔案及其完整路徑!
我嘗試過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