2016-09-19 13 views
2

내가 좋아하는 접두사가있는 폴더에있는 파일의 이름을 변경 명령에 대한 간단한 쓰기 위해 노력하고 있어요 :이상한 행동

c0001.mp4는 card1-c0001.mp4에게

된다 그러나이 코드를 실행하면 첫 번째 파일의 이름이 card1-card1-c0001.mp4로 두 번 변경됩니다. 어떤 폴더 또는 파일 이름이든 관계없이 첫 번째 파일은 항상 두 번씩 이름이 변경됩니다.

다른 모든 파일은 정상입니다. 에코로 명령을 변경하면 올바르게 보입니다. 내가 뭘 놓치고 있니?

for %%a IN ("F:\2016-Sep-18\card1\*.mp4") do ren %%a card1-%%~nxa 
+2

관련 항목 : [for] 또는 [for/R]이 디렉토리 (트리)를 열거합니까?] (http://stackoverflow.com/q/31975093) – aschipfl

답변

6

배치는 디렉토리를 읽고 첫 번째 파일의 이름을 변경하여 새 파일 이름을 만듭니다. 이 새 파일 이름은 디렉토리에 추가 된 다음 원본이 삭제됩니다. 발견 된 다음 이름이 처리되지만 새 이름은 첫 번째 파일 이름의 삭제로 비워진 빈 항목의 첫 번째 항목에 배치됩니다. 결국, 디렉토리의 마지막 파일 이름이 처리되고 첫 번째로 이름이 바뀐 파일이 처리됩니다. 그것을 치료하기 위해

, 나는 (당신은 단지 여러 위치에 한 번이 아니라 그것을 변경해야 할 것) 편의를 위해 변수에 디렉토리 이름을 할당 한 것을 여기

set "targetdir=F:\2016-Sep-18\card1" 
for /F %%a IN ('dir /b/a-d "%targetdir%\*.mp4"') do ECHO(ren %targetdir%\%%a card1-%%~nxa 

참고하십시오. 또한 단순히 테스트 및 확인 목적으로 echo 이름 바꾸기를했습니다.

여기서 아이디어는 dir 명령 출력 (디렉토리 이름, 기본 형식 없음)이 먼저 생성되어 메모리에 저장된다는 것입니다. 이 "파일"이 처리되므로 이름 바꾸기 작업이 시작되기 전에 dir이 완료됩니다.