Изменение расширений всех файлов в папке с помощью одной команды в Windows

145

Как я могу использовать командную строку Windows для изменения расширений тысяч файлов *****.jpg?

Berker Yüceer
источник
что вы подразумеваете под изменением всех расширений как *****. jpg? это означает, что все файлы расширения для JPG? если да, используйте ren . * .jpg
Имран Ризви
какая операционная система? Как вы хотите изменить их?
Брайс
@bryce вне курса операционной системы Windows ..
Berker Yüceer

Ответы:

300

Вы можете использовать ren(как в переименовании ):

ren *.XXX *.YYY

И, конечно же, переключите XXX и YYY для соответствующих расширений. Это изменится с XXX на YYY. Если вы хотите изменить все расширения, просто используйте подстановочный знак снова:

ren *.* *.YYY

Один из способов сделать это рекурсивно - с помощью FORкоманды. Его можно использовать с /Rопцией рекурсивного применения команды к соответствующим файлам. Например:

for /R %x in (*.txt) do ren "%x" *.renamed

изменит все .txtрасширения на .renamedрекурсивные, начиная с текущего каталога. %xпеременная, которая содержит совпадающие имена файлов.

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

Примечание: это работает только на cmd. Не будет работать на Powershell или Bash

Кейзер
источник
* .XXX изменит файлы для этого конкретного расширения (это означает, что он переименует все файлы с расширением XXX)
Хабиб
@ keyser5053 также я могу получить отчет о действии, выполненном здесь .. с использованием ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt?
Berker Yüceer
А как насчет рекурсивной замены во всех подкаталогах?
NightElfik
@NightElfik Я добавил рекурсивный пример, который используетFOR
keyser
4
Я не мог заставить это работать в powershell, но он отлично работал в cmd.exe. Просто чтобы другие знали.
Хаззи
20

на CMD

тип

ren *.* *.jpg

, выберет все файлы и переименует в * (какое бы имя они ни называли) плюс расширение в jpg

Хабиб
источник
10

Переименование поведения иногда «менее интуитивно»; например...

ren * .THM * .jpg переименует ваши файлы THM с расширением .jpg. Например: GEDC003.THM будет GEDC003.jpg

ren * .THM * b.jpg переименует ваши файлы THM в * .THMb.jpg. например: GEDC004.THM станет GEDC004.THMb.jpg

ren * .THM * .b.jpg переименует ваши файлы THM в * .b.jpg, например: GEDC005.THM станет GEDC005.b.jpg

PictureGuy
источник
Хорошее объяснение
Арслан Ахмад
7

ПРИМЕЧАНИЕ: не для Windows

При использовании ren-1.0 правильная форма:

"ren *.*" "#2.jpg"

Из man ren

Шаблон замены - это другое имя файла со встроенными подстановочными индексами, каждый из которых состоит из символа #, за которым следует цифра от 1 до 9. В новом имени соответствующего файла подстановочные индексы заменяются фактическими символами, которые соответствуют ссылочной ссылке. подстановочные знаки в оригинальном имени файла.

и

Обратите внимание, что оболочка обычно расширяет подстановочные знаки * и?, Что в случае ren нежелательно. Таким образом, в большинстве случаев необходимо заключать шаблон поиска в кавычки.

gbonetti
источник
Я должен был использовать # 1: ren "* .csv" "# 1.json"
elmalto
1
man ren? Вопрос был о Windows / cmd. Те теперь предоставляют manстраницы? Что такое ren-1.0и как мы можем просматривать его manстраницу в контексте?
underscore_d
5

это просто

ren *.* *.jpg

попробуйте это в командной строке

Имран Ризви
источник
3

Просто для тех, кто хочет сделать это в пакетных файлах, этот код работает:

FOR /R "C:\Users\jonathan\Desktop\test" %%f IN (*.jpg) DO REN "%%f" *.png

В этом примере все файлы с расширениями .jpg в каталоге C: \ Users \ jonathan \ Desktop \ test изменены на * .png.

Джонатан
источник
2

Переименовать несколько расширений файлов:

Вы хотите изменить ringtone1.mp3, ringtone2.mp3чтобы ringtone1.wav,ringtone2.wav

Вот как это сделать: я в d drive по командной строке (CMD), поэтому я использую:

d:\>ren *.* *.wav 

Это просто пример расширений файлов, вы можете использовать любые типы расширений файлов, такие как WAV, MP3, JPG, GIF, BMP, PDF, DOC, DOCX, TXT, это зависит от того, какая у вас операционная система.

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

nanduvtlr
источник
1

В моем случае у меня был каталог с 800+ файлами, заканчивающимися на .StoredProcedure.sql(они были написаны с помощью SSMS ).

Вышеуказанные решения не сработали. Но я придумал это:

(На основе ответов на пакетное программирование - получить относительный путь к файлу )

@echo off
setlocal enabledelayedexpansion
for %%f in (*) do (
  set B=%%f
  set B=!B:%CD%\=!
  ren "!B!" "!B:.StoredProcedure=!"
)

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

Marc.2377
источник
2
заменить две setкоманды с этой единственной один: set "B=%%~nxf". ( %%~nxfЭто п AME и е х натяжение %%f). %cd%может быть недействительным, когда вы делаете это рекурсивно.
Стефан
1

Я знаю, что это так старо, но я приземлился на него, и предоставленные ответы не работают для меня на powershell, поэтому после поиска нашел это решение

сделать это в PowerShell

Get-ChildItem -Path C:\Demo -Filter *.txt | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".old")}

кредит идет на http://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/

Mohamed
источник
0

Альтернативный способ переименования файлов с использованием пакета renamer npm.

ниже приведен пример переименования файлов расширений

renamer -d --path-element ext --find ts --replace js *
Сагар
источник
0

Что сработало для меня, так это (сначала перейдите в папку):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
Роджер
источник