하나의 명령으로 여러 폴더의 여러 파일 이름을 바꾸는 방법 cmd 프롬프트 명령 및 / 또는 배치

우리는 *.html파일 이름을 바꾸고 *.php싶지만 cmd 프롬프트 명령 및 / 또는 배치 파일을 사용하여 지식이 충분하지 않습니다.

문제는 각 파일이 별도의 폴더에 있다는 것입니다. 750 개 이상의 다른 폴더 이름에 대해 이야기하고 있습니다. 내가 아는 파일에 와일드 카드를 사용하는 *
것은 폴더에 와일드 카드를 사용하는 것은 나에게 알려져 있지 않습니다. FOR명령 프롬프트에서 명령 을 사용해야 할 수도 있지만 문제가 있습니다.

우리가 사용하는 폴더 구조는 다음과 같습니다.

부모 폴더 / 자식 폴더 / grandchild-folder / 파일 .html

예를 들면 다음과 같습니다.

  • games/A/game_name/file.html
  • games/B/game_name/file.html
  • games/C/game_name/file.html 등등.

부모 폴더는 모든 파일에서 동일합니다. 자식 및 손자 폴더는 대부분의 파일에서 다릅니다.

이 파일의 이름을 바꾼 후에 *.php는 다음에서 .htaccess영구적으로 리디렉션 한다고 가정합니다 .

RedirectMatch 301 (.*)\.html$ http://oursite.com$1.php


답변

get-childItem -recurse | Where {$_.extension -eq ".html"} | rename-item -newname { $_.name -replace ".html",".php" }

이것은 PowerShell에서 작동합니다. Windows 7 또는 Vista가있는 경우 기본적으로 설치되어 있어야합니다. XP를 사용하는 경우 여기에서 다운로드 할 수 있습니다 .


답변

명령 행에서 :

for /f "delims=*" %a in ('dir *.html /b /s') do ren "%a" *.php

참고 : *.html다른 와일드 카드를 대체 할 수 있습니다 ( 예 🙂 d:\www\*.html.

주 2 : 배치 파일 내에서 명령을 사용하는 경우, 대체 %a%%a(왜 나 한테 물어하지 않음)


답변

Flexible Renamer는 여러 가지 유형의 이름 바꾸기 검색 / 대체를 처리하는 훌륭한 작은 프로그램입니다. 정규 표현식을 허용하며 공통 패턴이 사전 정의되어 있습니다. 또한 하위 폴더에 항목을 포함 시키거나 폴더 자체에서 작업 할 수 있습니다. 또한 모든 변경 사항을 미리 볼 수 있습니다. 몇 년 동안 사용해 왔으며 강력히 추천합니다.

http://download.cnet.com/Flexible-Renamer/3000-2248_4-28799.html


답변

forfiles를 사용하여 스크립트를 작성하여 모든 하위 폴더에서 파일 이름을 재귀 적으로 바꿀 수 있습니다.

forfiles /S /M *.html /C "cmd /c rename @file @fname.php"   

출처 : 일괄 파일 이름 바꾸기를위한 배치 스크립트