Zmiana rozszerzeń wszystkich plików w folderze za pomocą jednego polecenia w systemie Windows

145

Jak mogę użyć wiersza poleceń systemu Windows, aby zmienić rozszerzenia tysięcy plików na *****.jpg ?

Berker Yüceer
źródło
co masz na myśli, zmieniając wszystkie rozszerzenia na *****. jpg? czy to oznacza wszystkie rozszerzenia plików do jpg? jeśli tak, użyj ren . * .jpg
Imran Rizvi
jaki system operacyjny? Jak chcesz je zmienić?
Bryce,
@bryce poza systemem operacyjnym Windows ..
Berker Yüceer

Odpowiedzi:

298

Możesz użyć ren(jak w zmianie nazwy ):

ren *.XXX *.YYY

I oczywiście zmień XXX i YYY na odpowiednie rozszerzenia. Spowoduje to zmianę od XXX do YYY. Jeśli chcesz zmienić wszystkie rozszerzenia, po prostu użyj ponownie symbolu wieloznacznego:

ren *.* *.YYY

Jednym ze sposobów wykonania tego działania rekurencyjnego jest użycie FORpolecenia. Może być używany z /Ropcją rekurencyjnego zastosowania polecenia do pasujących plików. Na przykład:

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

zmieni wszystkie .txtrozszerzenia na .renamedrekurencyjne, zaczynając od bieżącego katalogu. %xjest zmienną przechowującą pasujące nazwy plików.

A ponieważ masz tysiące plików, pamiętaj, aby poczekać, aż kursor ponownie zacznie migać, wskazując, że wszystko działa.

Uwaga: działa to tylko z cmd. Nie będzie działać na Powershell ani Bash

klucze
źródło
* .XXX zmieni pliki dla tego konkretnego rozszerzenia (oznacza to, że zmieni nazwy wszystkich plików z rozszerzeniem XXX)
Habib
@ keyser5053 też czy mogę otrzymać raport o wykonanej tu akcji .. z użyciem ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt?
Berker Yüceer
A co z rekurencyjną zamianą we wszystkich pod-katalogach?
NightElfik,
@NightElfik Dodałem rekurencyjny przykład, który używaFOR
keyser
4
Nie mogłem zmusić tego do działania w PowerShell, ale działało dobrze w cmd.exe. Tylko po to, aby inni byli świadomi.
hazzey
20

na CMD

rodzaj

ren *.* *.jpg

. wybierze wszystkie pliki i zmieni nazwę na * (jakąkolwiek nazwę mają) oraz rozszerzenie na jpg

Habib
źródło
10

Zachowanie związane ze zmianą nazwy jest czasami „mniej niż intuicyjne”; na przykład...

ren * .THM * .jpg zmieni nazwy plików THM, aby miały rozszerzenie .jpg. np .: GEDC003.THM będzie GEDC003.jpg

ren * .THM * b.jpg zmieni nazwy plików THM na * .THMb.jpg. np .: GEDC004.THM zmieni się na GEDC004.THMb.jpg

ren * .THM * .b.jpg zmieni nazwy plików THM na * .b.jpg, np .: GEDC005.THM zmieni się na GEDC005.b.jpg

PictureGuy
źródło
ładne wyjaśnienie
Arslan Ahmad
7

UWAGA: nie dla systemu Windows

Używając ren-1.0 poprawną formą jest:

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

Z man ren

Wzorzec zastępczy to inna nazwa pliku z osadzonymi indeksami symboli wieloznacznych, z których każdy składa się ze znaku #, po którym następuje cyfra od 1 do 9. W nowej nazwie pasującego pliku, indeksy symboli wieloznacznych są zastępowane rzeczywistymi znakami pasującymi do odnośnika symbole wieloznaczne w oryginalnej nazwie pliku.

i

Zwróć uwagę, że powłoka normalnie rozwija symbole wieloznaczne * i?, Co w przypadku ren jest niepożądane. Dlatego w większości przypadków konieczne jest ujęcie wzoru wyszukiwania w cudzysłów.

gbonetti
źródło
Musiałem użyć # 1: ren "* .csv" "# 1.json"
elmalto
1
man ren? Pytanie dotyczyło systemu Windows / cmd. Czy teraz udostępniają one manstrony? Co to jest ren-1.0i jak możemy zobaczyć jego manstronę w kontekście?
underscore_d
5

to proste

ren *.* *.jpg

spróbuj tego w wierszu polecenia

Imran Rizvi
źródło
3

Tylko dla osób, które chcą to zrobić w plikach wsadowych, ten kod działa:

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

W tym przykładzie wszystkie pliki z rozszerzeniami .jpg w katalogu C: \ Users \ jonathan \ Desktop \ test zostaną zmienione na * .png.

Jonathan
źródło
2

Zmień nazwę wielu rozszerzeń plików:

Chcesz zmienić ringtone1.mp3, ringtone2.mp3aby ringtone1.wav,ringtone2.wav

Oto jak to zrobić: jestem na dysku d w wierszu polecenia (CMD), więc używam:

d:\>ren *.* *.wav 

To tylko przykład rozszerzeń plików, możesz użyć dowolnego typu rozszerzenia pliku, takiego jak WAV, MP3, JPG, GIF, bmp, PDF, DOC, DOCX, TXT, zależy to od systemu operacyjnego.

A ponieważ masz tysiące plików, pamiętaj, aby poczekać, aż kursor ponownie zacznie migać, wskazując, że wszystko działa.

nanduvtlr
źródło
1

W moim przypadku miałem katalog z ponad 800 plikami kończącymi się na .StoredProcedure.sql(były skrypty z SSMS ).

Przedstawione powyżej rozwiązania nie działały. Ale wymyśliłem to:

(Na podstawie odpowiedzi na programowanie wsadowe - uzyskaj względną ścieżkę pliku )

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

Powyższy skrypt usuwa podciąg .StoredProcedurez nazwy pliku. Jestem pewien, że można go dostosować do większej liczby przypadków, poprosić o wkład i ogólnie być bardziej ogólny.

Marc.2377
źródło
2
zastąpić dwa setpolecenia z tym jednym z nich: set "B=%%~nxf". ( %%~nxfTo n AME i E x napięcie %%f). %cd%może być niepoprawny, kiedy robisz to rekurencyjnie.
Stephan
0

Alternatywnym sposobem, aby zmienić nazwy plików przy użyciu Renamer pakiet npm.

poniżej znajduje się przykład zmiany nazw rozszerzeń plików

renamer -d --path-element ext --find ts --replace js *
Sagar
źródło
0

To, co zadziałało, to ten (najpierw cd do folderu):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
zrozumiałem
źródło