2015-01-07 5 views
0

Предположим, у меня есть в папке N avi видео файлы и текстовый файл, names.txt, с N строками. Я хочу, чтобы создать пакетный файл, который будет переименовать все видео файлы, такие, как:Переименуйте файлы после списка имен

  • Первый файл .avi примет имя, которое находится на первой линии names.txt
  • The второй файл .avi примет имя, которое находится на второй линии names.txt
  • И так далее ... (имена будут содержать пробелы)

мне удалось написать сценарий для parssing в names.txt

@echo off 
for /f "tokens=1 delims=" %%a in (names.txt) do echo %%a 

А вот Тар скрипт parsses в .avi файлы

@echo off 
for %%b in (*.avi) do echo %%~nb 

Как я могу объединить их, так что прохождение будет осуществляться параллельно?

ответ

1

Я думаю, что я нашел то, что вам нужно в этом посте: How to batch rename files in a directory from a list of names in a text file

Я заказуНаша один из своих решений, чтобы попытаться ответить на ваш вопрос ...

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 

rem Load the list of new filenames 
set i=0 
for /F "delims=" %%a in (names.txt) do (
    set /A i+=1 
    set "newname[!i!]=%%a" 
) 
rem Do the rename: 
set i=0 
for /F "delims=" %%a in ('dir /b /o:n *.avi') do (
    set /A i+=1 
    for %%i in (!i!) do ren "%%a" "!newname[%%i]!" 
) 

Я был бы очень осторожным с порядок, в котором у вас есть перечисленные файлы. Я рекомендую добавить порядок сортировки в команду «dir». Windows DIR Command Documentation

+0

Я добавил недостающие 'delims =' для поддержки длинных имен файлов и добавил сортировку по имени в нижнем цикле. – foxidrive

+0

Спасибо! Я только изменяю одну строку, и она работает как шарм. set "newname [! I!] = %% a.avi" – user72233

Смежные вопросы