1

(Win10) В пакетном файле, как мне рекурсивно переименовать имена файлов в папке? Не расширение.

например

Файлы для переименования: heavy.doc, bright.jpg, fast.docx, quiet.png и т.д.

Переименуйте в: A1.*, А2.*, А3.*, A4. * И т.д. (Где. * Сохраняет исходное значение ext)

Становится: A1.doc, A2.jpg, A3.docx, A4.png и т.д.

Спасибо!

1 ответ1

1

После быстрого просмотра справочной страницы для for, я мог бы придумать это:

@echo off & setlocal EnableDelayedExpansion 
set a=1
for /f "tokens=1,2 delims=." %%G in ('dir /b /s /A:-D') do (
    ren "%%G.%%H" "A!a!.%%H" 
    set /a a+=1
)

Обновление: было бы лучше передать исходную папку в качестве параметра, чтобы сам скрипт мог быть размещен где угодно и не рисковал переименовываться сам.

@echo off & setlocal EnableDelayedExpansion 
set a=1
for /f "tokens=1,2 delims=." %%G in ('dir /b /s /A:-D %1') do (
    ren "%%G.%%H" "A!a!.%%H" 
    set /a a+=1
)

Объяснение:

@echo off this позволяет избежать записи каждой команды на консоль.

setlocal EnableDelayedExpansion это необходимо для того , чтобы переменная фактически увеличить.

set a=1 мы создаем переменную-счетчик с именем a и устанавливаем ее начальное значение равным 1 .

цикл for /f против списка имен файлов.

tokens=1,2 delims=. имя файла будет разделено, когда . встречается. Мы заинтересованы в первых двух токенах, полученных в результате этой операции. Примечание: ожидается, что имена файлов не содержат точку, кроме как между базовым именем и расширением.

%%G - это имя первого токена (подразумевается, что второй будет %%H).

в цикле in ('dir /b /s /A:-D %1') просматриваются результаты команды dir , в которой перечислены файлы в каталоге, переданные в качестве параметра %1 со следующими параметрами: /b clean output, /s включают результаты из подкаталогов, /A:-D только список файлов, а не имена папок.

ren "%%G.%%H" "A!a!.%%H" переименуйте имя файла (%%G.%%H восстанавливает исходное имя файла) в константу A плюс текущее значение переменной a плюс оригинальное расширение %%H

set /a a+=1 увеличивает значение счетчика.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .