1

Re: Как добавить префикс для всех файлов и папок в папке?(окна)

Я пытаюсь создать файл .bat, который переименует предварительно заданную структуру папок с префиксом номера проекта, например. название проекта /admin - становится - 7000-01 название проекта /7000-01 admin. Вот что у меня так далеко:

@Echo off
pushd
for /d %%g in (*) do ren "%%g" "7000-01 %%g"

Который работает только для верхнего уровня, но я бы хотел, чтобы он переименовал все подпапки (в том числе ниже уровня «admin», например, выше).

Я прочитал здесь - https://ss64.com/nt/for_d.html, что использование for /d /r должно работать для рекурсивного переименования всех подпапок, но я не могу заставить его работать.

К вашему сведению, pushd используется, поэтому имя .bat остается прежним.

1 ответ1

0

Вы были так близко! Правильная команда:

for /r /d %%g in (*) do ren "%%g" "7000-01 %%~ng"

Полное объяснение:

Как вы упомянули, вы должны использовать for /d /r для рекурсивной работы. (https://ss64.com/nt/for_d.html)

Проверка синтаксиса команды ren или rename показывает, что требуется очень специфический синтаксис:

>ren /?
Renames a file or files.

RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.

Note that you cannot specify a new drive or path for your destination file.

Ваша исходная команда внутри цикла for оценивала значение ren "FULL_PATH" "FULL_PATH" , и на самом деле это должно быть значение ren "FULL_PATH" "SIMPLE_FILE_NAME"

Чтобы получить имя файла без расширения или пути, используйте ~n с переменной (https://ss64.com/nt/syntax-args.html).

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