2013-07-15 3 views
10

매우 복잡한 디렉토리 구조에 수많은 파일이 있습니다. 토론 할 가치가없는 이유로 확장명이 ".inp"인 모든 파일의 이름을 ".TXT" 확장. 다른 확장 기능을 가진 다른 파일들도 많이 있습니다. 나는 5 단계 이상 재귀 적으로 해보고 싶습니다.파일 확장명을 재귀 적으로 대량으로 이름 바꾸기 (Windows 일괄 처리)

for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd 

을 ...하지만 이것은 단지 아래 디렉토리의 한 단계를 간다 :

지금까지 내가 가지고있다.

아무도 도와 줄 수 있습니까? 미리 감사드립니다!

답변

16
for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt" 

이 적합합니다. startdir을 시작 디렉토리 이름으로 바꾸고이 작업이 만족스럽게 작동하는지 확인한 다음 ren 전에 실제로 echo을 제거하여 이름을 바꿉니다. downvoters 들어


는 : 배치 파일을 실행하기 때문에, x가 metavariable (루프 제어 변수)이고 각 %%x%로 감소 될 필요가있는 것을 프롬프트 명령에서 Executing (실행 중)에서

for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt" 
상이 이 메시지를 프롬프트에서 실행하면

이 작동해야합니다. echo에 대한 참고 사항을 읽어보십시오. 윈도우 7, 나를 위해 다음과 같은 한 줄 명령의 작품에

+0

신난다! 그건 검은 마술처럼 간단하고 효과적입니다 :) – myforums

+0

@ Magoo ... 나는 당신을 사랑한다고 생각합니다. 제 인생에서 2 일이 걸린 문제에 대한 해결책을 제공해 주셔서 감사합니다. – Neville

20

는 *의 .js에, 재귀 적으로 모든 파일의 이름을 변경하기에 * .txt 인 :

FOR /R %x IN (*.js) DO ren "%x" *.txt 
+3

이 작업은 선택한 대답이 아니며 "%% i was inexpected"라고 말했습니다. 고마워! –

+0

허용 된 응답의 코드에서 "%% i was inexpected"오류가 발생했습니다. 시작 디렉토리로 cd를해야합니다. – brunettdan

+0

@SteveChamaillard : 선택한 답변은 라인이 배치 파일이라고 가정하기 때문입니다. 프롬프트에서 실행되면 각 '%%'를'% '로 변경해야합니다. – Magoo

관련 문제