2013-11-08 2 views
0

Я пытаюсь написать скрипт, который получит все файлы mt .avi в определенном каталоге, переименуйте каталог после каждого файла и вызовет другой скрипт в цикле: (имя каталога является вход)Переименовать папку в цикле с использованием пакетного скрипта

cd /D %1 
dir *.avi > avi.list 
set x=%1 
set z=%1 
cd .. 
    FOR /F "tokens=1-5" %G IN (avi.list) DO (
    @set y=%K 
    rename %x% %y% 
    set x=%y% 
    C:\indexer\Indexer.exe %y% 
    ) 
rename %y% %z% 
cd /D %z% 
del avi.list 

Спасибо!

+0

Подождите, так как вы хотите, чтобы командный файл переименовал каталоги с несколькими файлами .avi. Пожалуйста, дайте хороший пример того, что вы хотите сделать командный файл. – Monacraft

+0

У меня есть имя каталога 1 и в нем много файлов с именем «a» «b» «c» ... Я хочу переименовать корневую папку после имен файлов в цикле –

ответ

0

Оба% G и% K должны быть %% G и %% K внутри командного файла.

Вам также потребуется двойное цитирование, если имена файлов содержат пробелы или другие неудобные символы.

Есть более эффективные методы, чтобы получить имя файла и путь к (добавлено имя файла в одиночку): попробуйте это

@echo off 
cd /d "%~1" 
    for /f "delims=" %%a in (' dir *.avi /b /a-d ') do (
     echo filename without extension is "%%~na" 
     echo name is "%%~nxa" 
     echo filepath is "%%~dpa" 
     pause 
    ) 

В ЦМД строке прочитать справку из: FOR /?, а на последней странице - список модификаторов.

+0

Могу ли я использовать в цикле: "set filename = %% ~ nxa" –

+0

, а также: как я могу захватить имя файла без его продолжения? Спасибо! –

+0

Я добавил только имя файла. Вы можете установить переменную в термины, но вы также можете использовать термины в цикле, не требуя изменения переменной или задержки. Чтобы переименовать AVI только в имя файла, вы можете использовать 'ren '%% ~ nxa" "%% ~ na" ', а затем использовать команду' 'C: \ indexer \ Indexer.exe" "%% ~ na" 'if это то, что вам нужно сделать. – foxidrive

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