2014-11-24 3 views
0

여러 개의 파일이있는 폴더가 있습니다. 모든 파일 이름은 다음과 같습니다.명령 프롬프트를 사용하여 이름 목록으로 파일 이름을 바꾸는 방법은 무엇입니까?

"1 зелен.doc" 
"2 будда.doc" 
"3 конфуций.doc" 

모든 파일의 이름은 처음 시작 부분에 있습니다. 텍스트 파일에 들어있는 파일 이름 목록이 있습니다. 텍스트 파일의 각 행도 순서대로 있습니다. 따라서 첫 번째 줄은 첫 번째 파일 이름의 이름이고 두 번째 줄은 두 번째 파일 이름입니다. 명령 프롬프트를 사용하여 파일의 이름을 바꾸는 방법은 무엇입니까?

대단히 감사합니다!

+0

러시아어입니다. **':)'** – Aacini

+0

죄송합니다, 나는 영어를 결코 배우지 못했습니다 –

+0

나는 그 파일 이름을 의미했습니다! ';)' – Aacini

답변

2
@echo off 
setlocal EnableDelayedExpansion 

rem The list of filenames will be read from redirected Stdin 
< filenames.txt (

    rem Process the files via FOR command 
    for %%a in (*.*) do (

     rem Read the next name from the list 
     set /P name= 

     rem Rename the file 
     ren "%%a" "!name!" 

    ) 
) 
+0

나는이 것이 내 것보다 낫다. 훌륭한! – rojo

+1

정렬 된 숫자를주의하십시오. 디렉토리 목록은 "9 xxxx"앞에 "11 xxxx"를 정렬합니다. 이로 인해 이름이 일치하지 않을 수 있습니다. – dbenham

+0

이것은 대단합니다! 그것은 그 일을합니다. 완전한! Aacini 대단히 감사합니다! –

1

파일 이름 목록이 디렉토리 목록에 정확히 일치한다고 가정하면 텍스트 파일의 내용을 배열로, 디렉토리를 다른 배열로 나열한 다음 두 배열을 모두 for /L과 같이 반복하여 넣을 수 있습니다.

@echo off 
setlocal enabledelayedexpansion 

set "count=0" 

for /f "delims=" %%I in (textfile.txt) do (
    set "to[!count!]=%%I" 
    set /a count+=1 
) 

set "count=0" 

for %%I in (*.doc) do (
    set "from[!count!]=%%I" 
    set /a count+=1 
) 

for /L %%I in (0,1,!count!) do (
    if exist "!from[%%I]!" (
     echo ren "!from[%%I]!" "!to[%%I]!" 
    ) 
) 

이 스크립트를 .bat 파일에 저장하고 실행하십시오. 결과가 만족 스럽다면 ren 전에 echo을 제거하십시오.

+0

고맙습니다, 로조! –

관련 문제