최근 만들어진 디렉토리 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 : 수정 시간 )