PC · IT · DB/PC

[CMD] 명령프롬프트 for 문으로 forfiles 다중경로 처리하기

뿌레도 2023. 9. 8. 23:17
728x90
[CMD] 명령프롬프트 for 문으로 forfiles 다중경로 처리하기

 지난번에 forfiles로 일정기간이 지난 파일 일정 주기로 삭제하기에 대해서 작성했는데 대상 경로가 여러개인 경우 어떻게 처리할지 생각하다 for문을 이용해보았습니다.

 

 forfiles 에 대해서 궁금하다면 아래의 링크를 확인하시기 바랍니다.

 

[CMD] forfiles로 일정기간 지난 파일 일정 주기로 삭제하기

 

[CMD] forfiles로 일정기간 지난 파일 일정 주기로 삭제하기

[CMD] forfiles로 일정기간 지난 파일 일정 주기로 삭제하기 컴퓨터를 사용하다보면 IIS 로그 혹은 기타 프로그램 로그가 주기적으로 쌓이게 됩니다. 로그 분석을 위해 안쌓기는 뭐하고 쌓아야겠는

trivia-korea.tistory.com

 

 

728x90

 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 파일에서 % 기호를 두 배로 늘려야 합니다.

출처 : https://syntaxfix.com/


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

300x250