Как добавить префикс ко всем папкам и подпапкам? (окна)

344
Will

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
JonathanDavidArndt

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

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

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

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

Проверка синтаксиса команды renor 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 ).

Спасибо, это сработало отлично, и я думаю, что понимаю, почему, бонус! Will 5 лет назад 0