Ändern aller Dateierweiterungen in einem Ordner mit einem Befehl unter Windows

145

Wie kann ich über die Windows-Befehlszeile die Erweiterungen von Tausenden von Dateien ändern *****.jpg?

Berker Yüceer
quelle
Was meinst du damit, alle Erweiterungen als *****. jpg zu ändern? Bedeutet das, dass alle Dateien auf jpg erweitert werden? wenn ja, benutze ren . * .jpg
Imran Rizvi
Welches Betriebssystem? Wie möchten Sie sie ändern?
Bryce
@ Bryce Off Course Windows Betriebssystem ..
Berker Yüceer

Antworten:

298

Sie können verwenden ren(wie beim Umbenennen ):

ren *.XXX *.YYY

Und natürlich wechseln Sie XXX und YYY für die entsprechenden Erweiterungen. Es ändert sich von XXX zu JJJ. Wenn Sie alle Erweiterungen ändern möchten, verwenden Sie einfach den Platzhalter erneut:

ren *.* *.YYY

Eine Möglichkeit, diese Arbeit rekursiv auszuführen, ist der FORBefehl. Es kann mit der /ROption verwendet werden, einen Befehl rekursiv auf übereinstimmende Dateien anzuwenden. Beispielsweise:

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

ändert alle .txtErweiterungen in .renamedrekursiv, beginnend im aktuellen Verzeichnis. %xist die Variable, die die übereinstimmenden Dateinamen enthält.

Und da Sie Tausende von Dateien haben, warten Sie, bis der Cursor wieder zu blinken beginnt, um anzuzeigen, dass die Arbeit beendet ist.

Hinweis: Dies funktioniert nur auf cmd. Funktioniert nicht mit Powershell oder Bash

Keyser
quelle
* .XXX ändert Dateien für diese bestimmte Erweiterung (bedeutet, dass alle Dateien mit der Erweiterung XXX umbenannt werden)
Habib
@ keyser5053 Kann ich auch einen Bericht über die hier durchgeführte Aktion erhalten ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt?
Berker Yüceer
Und wie wäre es mit rekursivem Ersetzen in allen Unterverzeichnissen?
NightElfik
@ NightElfik Ich habe ein rekursives Beispiel hinzugefügt, dasFOR
Keyser
3
Ich konnte dies nicht in Powershell zum Laufen bringen, aber es funktionierte gut in cmd.exe. Nur damit andere es wissen.
Hazzey
20

auf CMD

Art

ren *.* *.jpg

. wählt alle Dateien aus und benennt sie in * um (welcher Name auch immer) und erweitert sie in jpg

Habib
quelle
10

Das Umbenennen von Verhalten ist manchmal weniger intuitiv. beispielsweise...

ren * .THM * .jpg benennt Ihre THM-Dateien um, um die Erweiterung .jpg zu erhalten. Beispiel: GEDC003.THM ist GEDC003.jpg

ren * .THM * b.jpg benennt Ihre THM-Dateien in * .THMb.jpg um. Beispiel: GEDC004.THM wird zu GEDC004.THMb.jpg

ren * .THM * .b.jpg benennt Ihre THM-Dateien in * .b.jpg um. Beispiel: GEDC005.THM wird zu GEDC005.b.jpg

PictureGuy
quelle
nette Erklärung
Arslan Ahmad
7

HINWEIS: Nicht für Windows

Mit ren-1.0 lautet die richtige Form:

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

Von man ren

Das Ersetzungsmuster ist ein anderer Dateiname mit eingebetteten Platzhalterindizes, von denen jeder aus dem Zeichen # gefolgt von einer Ziffer von 1 bis 9 besteht. Im neuen Namen einer übereinstimmenden Datei werden die Platzhalterindizes durch die tatsächlichen Zeichen ersetzt, die mit den referenzierten übereinstimmen Platzhalter im ursprünglichen Dateinamen.

und

Beachten Sie, dass die Shell normalerweise die Platzhalter * und? Erweitert, was im Fall von ren unerwünscht ist. In den meisten Fällen ist es daher erforderlich, das Suchmuster in Anführungszeichen zu setzen.

Gbonetti
quelle
Ich musste # 1: ren "* .csv" "# 1.json"
elmalto
1
man ren? Die Frage betraf Windows / cmd. Bieten diese jetzt manSeiten an? Was ist ren-1.0und wie können wir die manSeite im Kontext anzeigen ?
underscore_d
5

das ist einfach

ren *.* *.jpg

Versuchen Sie dies an der Eingabeaufforderung

Imran Rizvi
quelle
3

Nur für Leute, die dies in Batch-Dateien tun möchten, funktioniert dieser Code:

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

In diesem Beispiel werden alle Dateien mit den Erweiterungen .jpg im Verzeichnis C: \ Users \ jonathan \ Desktop \ test in * .png geändert.

Jonathan
quelle
2

Benennen Sie mehrere Dateierweiterungen um:

Sie möchten ändern ringtone1.mp3, ringtone2.mp3zu ringtone1.wav,ringtone2.wav

So geht's: Ich bin in d Laufwerk an der Eingabeaufforderung (CMD), also benutze ich:

d:\>ren *.* *.wav 

Dies ist nur ein Beispiel für Dateierweiterungen. Sie können jede Art von Dateierweiterung wie WAV, MP3, JPG, GIF, BMP, PDF, DOC, DOCX, TXT verwenden. Dies hängt von Ihrem Betriebssystem ab.

Und da Sie Tausende von Dateien haben, warten Sie, bis der Cursor wieder zu blinken beginnt, um anzuzeigen, dass die Arbeit beendet ist.

nanduvtlr
quelle
1

In meinem Fall hatte ich ein Verzeichnis mit mehr als 800 Dateien, die mit endeten .StoredProcedure.sql(sie wurden mit SSMS geschrieben ).

Die oben aufgeführten Lösungen haben nicht funktioniert. Aber ich habe mir das ausgedacht:

(Basierend auf Antworten auf die Stapelprogrammierung - relativen Pfad der Datei abrufen )

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

Das obige Skript entfernt den Teilstring .StoredProcedureaus dem Dateinamen. Ich bin sicher, dass es angepasst werden kann, um mehr Fälle abzudecken, um Eingabe zu bitten und insgesamt allgemeiner zu sein.

März 2377
quelle
2
Ersetzen Sie Ihre beiden setBefehle durch diesen einen : set "B=%%~nxf". ( %%~nxfist n ame und e x Spannung von %%f). %cd%könnte ungültig sein, wenn Sie es rekursiv tun.
Stephan
1

Ich weiß, dass dies so alt ist, aber ich bin darauf gelandet, und die bereitgestellten Antworten haben bei Powershell für mich nicht funktioniert. Nach der Suche wurde diese Lösung gefunden

es in Powershell zu tun

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

Gutschrift geht an http://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/

Mohamed
quelle
0

Eine alternative Möglichkeit, Dateien mit dem Renamer- Paket npm umzubenennen .

Im Folgenden finden Sie ein Beispiel für das Umbenennen von Dateierweiterungen

renamer -d --path-element ext --find ts --replace js *
Sagar
quelle
0

Was für mich funktioniert hat, ist diese (CD zuerst in den Ordner):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
Roger
quelle