[batch] 폴더 내 파일명을 전부 소문자로 바꿔주는 배치파일

tolowercase.bat

pushd %1    –> 작업할 폴더로 이동합니다.

setlocal       –> 여기서 부터 일어나는 할당을 로컬화 합니다.

 

set DIRCMD=/s/b/l      –> dir 명령의 옵션을 선입력 합니다.

for /f “tokens=*” %%a in (‘dir/a-d’) do (         –> 폴더 내 파일들만 루프를 돕니다.

echo %%a>find /v “.svn” && move “%%a” “%%a”        –> %%a 에 .svn 이라는 문구가 없으면 파일을 이동합니다.

)

 

for /f “tokens=*” %%a in (‘dir/ad) do (           –> 폴더 내 폴더들만 루프 돕니다.

echo %%a>find /v “.svn” && move “%%a” “%%a_”&move “%%a_” “%%a”    –> 폴더명에 .svn이 없으면 변경합니다.

)

endlocal

popd

 

사용법은 tolowercase.bat [폴더명] 을 하면 됩니다.

복붙 하시려면 –> 로 설명된 부분들을 지워주세요. rem으로 했어야 하는디…

 

파일과 폴더를 따로 변경하는 이유는 파일은 move “A.txt” “a.txt” 명령으로 한방에 소문자로 변경이 되는데 반해

폴더는 move “dir” “dir” 로 같은 이름으로 이동 하면 프로세스에서 사용중이라서 안된다는 오류를 뱉어 냅니다.

그래서 move “dir” “dir_” 로 다른 이름으로 한번 바꿨다가 move “dir_” “dir” 로 되돌려 주면 됩니다.

Leave a Reply