Wie kann ich über die Windows-Befehlszeile die Erweiterungen von Tausenden von Dateien ändern *****.jpg
?
Wie kann ich über die Windows-Befehlszeile die Erweiterungen von Tausenden von Dateien ändern *****.jpg
?
Antworten:
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 FOR
Befehl. Es kann mit der /R
Option verwendet werden, einen Befehl rekursiv auf übereinstimmende Dateien anzuwenden. Beispielsweise:
for /R %x in (*.txt) do ren "%x" *.renamed
ändert alle .txt
Erweiterungen in .renamed
rekursiv, beginnend im aktuellen Verzeichnis.
%x
ist 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
ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt
?
FOR
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
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.
man ren
? Die Frage betraf Windows / cmd
. Bieten diese jetzt man
Seiten an? Was ist ren-1.0
und wie können wir die man
Seite im Kontext anzeigen ?
das ist einfach
ren *.* *.jpg
Versuchen Sie dies an der Eingabeaufforderung
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.
Benennen Sie mehrere Dateierweiterungen um:
Sie möchten ändern ringtone1.mp3
, ringtone2.mp3
zu 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.
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 .StoredProcedure
aus dem Dateinamen. Ich bin sicher, dass es angepasst werden kann, um mehr Fälle abzudecken, um Eingabe zu bitten und insgesamt allgemeiner zu sein.
set
Befehle durch diesen einen : set "B=%%~nxf"
. ( %%~nxf
ist n ame und e x Spannung von %%f
). %cd%
könnte ungültig sein, wenn Sie es rekursiv tun.
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/