0

У меня есть папка со многими подпапками, которые имеют дополнительные подпапки. каждая папка имеет несколько файлов.Массовое переименование (добавление суффикса/префикса) файлов рекурсивно в Windows

Я хочу, чтобы переименовать все файлы, добавляя некоторый суффикс к ним

напр:
Оригинал: FileName1.ext
Финал: Suf_FileName1.ext

Чтобы выполнять эту функцию, нашел это команда онлайн

`FOR /R %x IN (*) DO ren "%x" Suf_*` 

, но это заменяет исходные символы в исходном имени файла как
Оригинал: FileName1.ext
Финал: Suf_Name.ext

(обратите внимание, что удалила начальные символы в имени исходного файла)

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

Спасибо заранее.

+0

здесь несколько [путей] (http: //www.howtogeek.com/111859/how-to-batch-rename-files-in-windows-4-way-to-rename-multiple-files /) – crowchirp

+0

на основе ниже ответа 'FOR/R% x IN (*) DO ren"% x "" Suf_% ~ nxx "' – crowchirp

ответ

1

Когда вы используете команду for для итерации по набору файлов, заменяемый параметр for (%x в вашем примере) содержит ссылку на файл.

При использовании %x в командах, содержащихся в пункте do, этот параметр заменяется информацией обрабатываемого файла, по умолчанию имени и расширение файла (при использовании простого for) или файла с полным путь (при использовании рекурсивного for /R), но вы можете решить и изменить какую информацию вы хотите использовать. Сменный параметр позволяет использовать некоторые модификаторы (вы можете увидеть полный список, если вы выполните for /?)

В вашем случае для вашей маски переименования вам потребуется имя и расширение файла, на который делается ссылка (я изменил ваш %x с %F поэтому синтаксис яснее)

%~nxF 
^^^^.... replaceable parameter 
||+..... extension of the file referenced 
|+...... name of the file referenced 
+....... operator for modifier usage 

Ваша команда может быть что-то вроде

for /R %F in (*) do echo ren "%F" "Suf_%~nxF" 
  • примечание: echo в команде - это просто привычка отладки. Прежде чем изменять что-либо, сначала покажите, чтобы консоль команды, которые будут выполнены. Если вывод кажется правильным, нам нужно удалить echo и снова запустить команду.

Помните, что если вы хотите использовать команду внутри пакетного файла, вам нужно бежать знаки процента в for замещаемых параметров путем их удвоения. Внутри командного файла предыдущая команда будет

for /R %%F in (*) do echo ren "%%F" "Suf_%%~nxF" 
+0

Большое спасибо Брату. !! –

Смежные вопросы