1

у меня есть одна большая папка с множеством папок с некоторыми файлами, например:

FOLDER
img 08-21
- japan.jpg; 
- german.jpg;
- london.jpg;

img 08-22
- caribic.jpg
- malta.jpg

ims 08-23
- center.jpg
- circle.jpg
- bike.jpg

и я хочу переименовать пакетно (.bat или что-нибудь для WinXP cmd), чтобы

FOLDER
01-img 08-21
- 01-japan.jpg
- 01-german.jpg
- 01-london.jpg

02-img 08-22
- 02-caribic.jpg
- 02-malta.jpg

03-ims 08-23
- 03-center.jpg
- 03-circle.jpg
- 03-bike.jpg

Я хочу переименовать папку в префикс (номер) -папки и файлы (в папке) в префикс (папка) -файла. Может кто-нибудь, пожалуйста, помогите мне?

1 ответ1

4

Следующий пакетный файл должен решить эту проблему. Пояснения следуют ниже.

@echo off
setlocal enableextensions enabledelayedexpansion
set counter=0
for /d %%d in (*) do (
    set /a counter+=1
    call :lz
    pushd %%d
    for %%f in (*) do ren "%%f" "!counter!-%%f"
    popd
    ren "%%d" "!counter!-%%d"
)
endlocal
goto :eof
:lz
set counter=000%counter%
rem adapt this to allow for three-digit numbering
set counter=%counter:~-2%
goto :eof

В основном это перебирает все каталоги с

for /d %%d in (*)

Параметр /d здесь предназначен для зацикливания только над каталогами. Текущий каталог в цикле хранится в %%d . Затем счетчик (который установлен в 0 в начале) увеличивается на единицу и дополняется соответствующим образом в начале нулями, если необходимо. Это делается с помощью вызова подпрограммы :lz . Внутри этой подпрограммы (она находится в конце пакета) количество цифр может быть изменено в строке

set counter=%counter:~-2%

изменив 2 на 3 или около того.

Затем каталог будет изменен на тот, который мы сейчас обрабатываем с помощью pushd (у него есть приятное свойство, которое мы можем отменить это изменение каталога впоследствии с помощью popd), и выполняется другой цикл, на этот раз над файлами внутри каталога:

for %%f in (*) do ren "%%f" "!counter!-%%f"

который переименовывает файлы и добавляет к ним значение счетчика. Восклицательные знаки вокруг имени переменной счетчика представляют собой так называемое отложенное расширение, которое необходимо здесь (почему это можно прочитать в help set).

После переименования всех файлов в каталоге мы снова выпрыгиваем из него и переименовываем сам каталог. Здесь нет ничего особенного.

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