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

14

Следующая команда изменяет только имена файлов, но не папок.

for %a in (*) do ren "%a" "00_%a"

MatMis
источник
Вы обязательно должны использовать командный файл? Разве вы не можете использовать такую ​​программу, как Rename Master, чтобы сделать это?
Dour High Arch

Ответы:

15

Следующая команда изменяет только имена файлов, но не папок.

for %a in (*) do ren "%a" "00_%a"

Заметки:

  • Использование, forкак указано выше, не рекомендуется.
  • Существует вероятность, что файлы могут быть переименованы несколько раз.
  • Смотрите ниже причину почему.

Используйте следующее в cmdоболочке:

for /f "tokens=*" %a in ('dir /b') do ren "%a" "00_%a"

В пакетном файле (заменить %на %%):

for /f "tokens=*" %%a in ('dir /b') do ren "%%a" "00_%%a"

Замечания:

Очень важно, чтобы вы использовали, FOR /Fа не просто FOR.

Эта FOR /Fкоманда собирает весь результат DIRкоманды до того, как она начнет итерацию, тогда как простая FORначинает итерацию после заполнения внутреннего буфера, что повышает риск переименования одного и того же файла несколько раз.

как советовал dbenham в своем ответе, чтобы добавить «текст» в конец нескольких имен файлов :


Дальнейшее чтение

ДэвидПостилл
источник
0

Чтобы выполнить этот цикл For для папок (каталогов) вместо файлов, просто включите /Dпереключатель.

for /D %a in (*) do ren "%a" "00_%a"

От for /?:

FOR / D% переменная IN (set) команда DO [параметры-команды]

If set contains wildcards, then specifies to match against directory
names instead of file names.
Ƭᴇcʜιᴇ007
источник
renработает на папках. Ограничение заключается в том, что «вы не можете указать другой диск или путь для цели».
DavidPostill
@DavidPostill Да, это была старая привычка, я изменил ее обратно Ren.
Ƭᴇcʜιᴇ007
Вы можете сделать файлы и папки в одной команде (см. Мой ответ). И я подозреваю, что for /dможет также возникнуть проблема с попыткой обработки значений несколько раз (см. Также мой ответ).
DavidPostill