Вы были так близко! Правильная команда:
for /r /d %%g in (*) do ren "%%g" "7000-01 %%~ng"
Полное объяснение:
Как вы упомянули, вы должны использовать for /d /r
для рекурсивной работы. ( https://ss64.com/nt/for_d.html )
Проверка синтаксиса команды ren
or 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 ).