[CMD] 명령프롬프트 for 문으로 forfiles 다중경로 처리하기
지난번에 forfiles로 일정기간이 지난 파일 일정 주기로 삭제하기에 대해서 작성했는데 대상 경로가 여러개인 경우 어떻게 처리할지 생각하다 for문을 이용해보았습니다.
forfiles 에 대해서 궁금하다면 아래의 링크를 확인하시기 바랍니다.
[CMD] forfiles로 일정기간 지난 파일 일정 주기로 삭제하기
for 문 + forfiles 사용하는 방법
setlocal * : 배치 파일에서 환경 변수의 지역화
set 문으로 del_paths에 대해서 지정하고 for문을 통해 %P에 del_path를 하나씩 불러와 forfiles 구문을 실행하게 됩니다.
@echo on
setlocal enabledelayedexpansion
set "del_paths[0]=C:\trivia-korea\1"
set "del_paths[1]=C:\trivia-korea\2"
set "del_paths[2]=C:\trivia-korea\3"
for %%P in (%del_paths%) do (
forfiles /P %%P /S /M *.js /C "cmd /c del @file"
)
pause
bat파일에서 %P가 아니라 %%인 이유
DOS에서는 명령줄에서 환경 변수를 사용할 수 없었고 배치 파일에서만 % 기호를 구분 기호로 사용했습니다. 배치 파일에서 리터럴 % 기호를 원하는 경우 두 개를 붙여써야 합니다. (예를들어 echo)
이는 명령줄에서 환경 변수를 허용하는 Windows NT로 이어졌지만 이전 버전과의 호환성을 위해서는 여전히 .cmd 파일에서 % 기호를 두 배로 늘려야 합니다.
setlocal 옵션에 대한 설명
setlocal enableextensions
일치 하는 때까지 명령 확장을 사용 하면 endlocal 하기 전에 설정에 관계 없이 명령이 발견 되는 setlocal 명령이 실행 된 합니다.
setlocal disableextensions
일치 하는 때까지 명령 확장을 사용 하지 않도록 설정 endlocal 하기 전에 설정에 관계 없이 명령이 발견 되는 setlocal 명령이 실행 합니다.
setlocal enabledelayedexpansion
일치 하는 때까지 지연된 환경 변수 확장을 사용 하면 endlocal 하기 전에 설정에 관계 없이 명령이 발견 되는 setlocal 명령이 실행 합니다.
setlocal disabledelayedexpansion
일치 하는 때까지 지연된 환경 변수 확장을 사용 하지 않도록 설정 endlocal 하기 전에 설정에 관계 없이 명령이 발견 되는 setlocal 명령이 실행 합니다.
#for문 사용법 #forfiles 명령어 #forfiles 예제 #forfiles 파일 필터링 #forfiles 하위 폴더 검색 #forfiles 파일 삭제 #forfiles 파일 이동 #forfiles 파일 복사 #forfiles 파일 이름 변경 #forfiles 파일 압축 #setlocal enableextensions #setlocal disableextensions #setlocal enabledelayedexpansion #setlocal disabledelayedexpansion
'PC · IT · DB > PC' 카테고리의 다른 글
[PowerShell] Get-ChildItem 수정 후 30분 지난 파일 찾기 (forfiles 시간 단위 설정 대체) (0) | 2023.09.15 |
---|---|
[CMD] 명령프롬프트 dir + find 문으로 특정 경로에서 특정 확장자 파일 혹은 폴더 찾아서 txt 파일로 추출 (0) | 2023.09.15 |
[Windows] 윈도우 10 Home 로컬 그룹 보안 정책 편집기 (gpedit.msc) 설치방법 (0) | 2023.09.06 |
[CMD] forfiles로 일정기간 지난 파일 일정 주기로 삭제하기 (0) | 2023.09.05 |
[CMD+PowerShell] 윈도우 시작시 ISO 자동 탑재하기, 가상 CDROM 필요할 때 (ISO Auto Mount) (0) | 2023.09.04 |