재귀 dir 명령에서 최신 파일을 가져오는 명령줄

재귀 dir 명령에서 최신 파일을 가져오는 명령줄

내 하드 디스크에는 매일 생성되는 수백 개의 하위 폴더가 있으며 여기에는 특정 텍스트 파일(Tracker.txt)이 포함될 수 있습니다.

전체 경로가 포함된 하나의 결과, 즉 최신 tracker.txt 파일만 얻기 위해 cmdline 또는 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

추가 리소스

  • 종류
  • /F의 경우
  • FOR /?(일괄 대체)

    In addition, substitution of FOR variable references has been enhanced.
    You can now use the following optional syntax:
    
    %~fI        - expands %I to a fully qualified path name
    %~tI        - expands %I to date/time of file
    
  • 세트

관련 정보