본문 바로가기

카테고리 없음

[batch]최근 만들어진 디렉토리 3개 구하기

최근 만들어진 디렉토리 3개를 보여주고 사용자가 그 중 원하는 디렉토리를 선택할 수 있게 해주는 배치스크립트.

@echo off

set WORK_DIR=D:\temp\
SetLocal EnableDelayedexpansion
@FOR /f "delims=" %%f IN ('dir /b/ad-h/o-d/t:c %WORK_DIR%') DO (
    set /a "idx+=1"
    set "DirName[!idx!]=%%~nxf"
    if !idx!==3 goto :break
)

:break
for /L %%i in (1,1,%idx%) do (
    echo [%%i] !DirName[%%i]!
)

echo.
set /p inVal=Select Directory:
echo.
cd %WORK_DIR%!DirName[%inVal%]!
dir
endlocal

https://stackoverflow.com/questions/45809295/batch-file-read-file-names-from-a-directory-and-store-in-array 를 참고해서 약간 수정해보았습니다.

간단해서 설명 필요없는 수준이지만 대충 이런 로직.

시간 역순으로 디렉토리 목록 구해서 배열에 3개까지 담고 break.

배열에 담은 값 보여주고 사용자가 원하는 배열 인덱스값 타이핑하면 선택한 디렉토리로 이동 후 파일 목록 출력.

그리고, 목록 구할 때 사용한 dir 옵션 간단히 정리하면 ...

/b :  파일명만.
/ad-h :  디렉토리만 ( /a-d : 파일만 )
/o-d : 시간 역순 ( od : 시간 순 )
/t:c : 생성 시간 ( /t:w :  수정 시간 )