Gibt es eine Möglichkeit zum Umbenennen von Dateien in Kleinbuchstaben?

121273
ino

Ich brauche eine Möglichkeit, alle Dateien in Ordnern und Unterordnern in Kleinbuchstaben umzubenennen.

Ich würde gerne wissen, ob es eine Möglichkeit gibt, dies nur mit Windows (XP oder 7) zu tun.

59
Windows unterscheidet nicht zwischen kleinen und oberen Kappen wie bei Unix. Wenn Sie sagen, warum Sie das brauchen, könnte dies vielleicht zur Lösung des Problems beitragen. Rook vor 15 Jahren 0
@Idigas. Sorry, but since NTFS, filenames have been case sensitive. See http://support.microsoft.com/kb/100625 DaveParillo vor 15 Jahren 1
Just great. Take a bad idea and spread it further. What a support nightmare when someone sends a file and a fat finger mistake means they sent "Answers.dat" and the incoming process expects "answers.dat". There's just no good reason for those two names to be considered 'different'. David vor 15 Jahren 0
@David, zum Beispiel erfordert Java tatsächlich Dateinamen. Dies kann bei nicht case-sensitive Dateisystemen zu Problemen führen. Arjan vor 15 Jahren 2
Ich weiß, das ist alt, aber ich wollte hier ein Missverständnis aufklären. Während NTFS die Groß- / Kleinschreibung unterstützt, unterscheidet das Windows-Betriebssystem NICHT! geo vor 11 Jahren 9
Ein Grund ist, wie erwähnt, plattformübergreifende Tools wie Java. Wenn Sie beispielsweise PDF-Downloads von einem Apache-Webserver unter Windows aus bereitstellen, müssen Sie den Dateinamen der Festplatte beachten. Alan B vor 9 Jahren 0

13 Antworten auf die Frage

114
loftysnake

Wechseln Sie in das Verzeichnis und führen Sie den folgenden Befehl aus:

for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f") 

Hier ist die Panne, falls jemand etwas ändern / verbessern möchte:

  • for /f - Für jede Zeile
  • "Tokens=*" - Verarbeiten Sie jeden Artikel in jeder Zeile.
  • %f in (...)- %fist Ihr Variablenname für jeden Artikel.
  • dir - listet jede Datei und jedes Unterverzeichnis in einem Verzeichnis auf.
  • /l- (Parameter für dir) Verwendet Kleinbuchstaben.
  • /b- (Parameter für Verzeichnis ) Verwendet das bloße Format, nur die Datei- / Verzeichnisnamen, keine Größe und keine Header.
  • /a-d- (Parameter für mich) Sie nicht Liste Verzeichnisse . ( asteht für attribute, -steht für notund dsteht für directory) .
  • rename "%f" "%f"- benennen Sie die Datei mit einem eigenen Namen um, der durch den dirBefehl und die /lKombination tatsächlich unterschritten wird .
Rekursive Version: `for / f" Token = * "% f in ('dir / l / b / ad / s') do (benenne"% f ""% f ")` (addierte / r zu dir). Sawny vor 11 Jahren 7
das ist nur großartig Shir Gans vor 11 Jahren 3
Die rekursive Version funktionierte nicht für mich - Umbenennen beschwert sich darüber, dass der Befehl ein ungültiges Format hat. Es stellte sich heraus, dass / s die zweite Datei als absoluten Pfad angegeben hat und die Dateinamenerweiterung (% ~ nxf) den ursprünglichen Dateinamen in Großbuchstaben ergab. Am Ende nur noch manuell rekursiert. Dogmatixed vor 11 Jahren 4
Dies ist eine sehr schöne Antwort. Auf den Punkt, keine externen Programme benötigt, nette und kleine Befehle, keine komplizierten Batch-Dateien. Jeff Wilbert vor 11 Jahren 3
Kann es geändert werden, um Kleinbuchstaben in Großbuchstaben umzuwandeln? Chucky vor 8 Jahren 2
Dies schlägt fehl, wenn ein Dateiname mit einem Leerzeichen oder einem Semikolon beginnt. Verwenden Sie besser "" eol =: delims = "` dbenham vor 8 Jahren 0
Ich musste "% f" in "%% f" ändern. dann hat es einfach perfekt funktioniert. gilu vor 7 Jahren 1
Um rekursiv zu sein, musste ich Folgendes tun, damit es funktioniert. Ich habe das gleiche Problem wie @Dogmatixed. `for / f" Token = * "% g in ('dir / b') do (für / f" Token = * "% f in ('dir% ~ fg / l / b / a-d') do ( benennen Sie "% ~ fg \% f" "% f")) `um halexh vor 6 Jahren 1
Und wie ändere ich diesen Code, um von Großbuchstaben zu Kleinbuchstaben zu wechseln? Rishav vor 6 Jahren 0
Das hat bei mir nicht funktioniert. Tatsächlich funktioniert das Umbenennen von FILE.EXT file.ext nicht. Seppo Enarvi vor 6 Jahren 0
18
joe

spacetornado Renamer ist ein Windows-Programm, das massenweise Dateien in Batches umbenennt . Sie können Text suchen und ersetzen, eine bestimmte Anzahl von Zeichen entfernen, die Groß- / Kleinschreibung in Groß- oder Großbuchstaben ändern und Text an den Anfang oder das Ende (Anfügen / Anfügen) jedes Dateinamens anfügen

Bitte geben Sie mir den Grund für die Stimmabgabe joe vor 15 Jahren 1
Leute erklären leider selten: / Gnoupi vor 15 Jahren 4
Ich denke, das Downvote war, weil das OP eine Lösung wollte, die ohne zusätzliche Software funktionierte. Und ich denke, das Downvote wurde nicht erklärt, weil einige Leute dazu neigen, Downvotes zu rächen. innaM vor 15 Jahren 6
Die grafische Benutzeroberfläche ist ein bisschen funky, aber sie macht den Job besser als einige andere Umbenenner, die ich da draußen gesehen habe. jcollum vor 13 Jahren 0
Ich habe Sie gerade angehoben, um das Downvote abzubrechen. Nimm das, Downvoter! Alan B vor 9 Jahren 0
Dies tat es, als ich rekursives Umbenennen für das Bereinigen von Dateien von einem Linux-FTP-Server benötigte. Allerdings musste es als Admin ausgeführt werden, bevor es ordnungsgemäß funktionierte. Fühlt sich an wie ein altes und nicht gepflegtes Programm :) Nelson vor 9 Jahren 1
11
nixda

Seit Windows 7 können Sie PowerShell für diese Aufgaben verwenden

Get-ChildItem "C:\path\to\folder" -recurse |  Where {-Not $_.PSIsContainer} |  Rename-Item -NewName {$_.FullName.ToLower()} 

- Wählen Sie Ihren Stammordner
- Alle Dateien im Stammordner und in den Unterordnern werden umbenannt
- Ordnernamen werden mit ausgeschlossen Where {-Not $_.PSIsContainer} |

6
dbenham

Hier ist eine richtige rekursive Befehlszeilenlösung, die nur native cmd.exe-Befehle verwendet, die tatsächlich funktionieren. Ich glaube, es ist die einfachste mögliche native Lösung:

for /r %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/a-d "%D"') do @ren "%D\%F" "%F" 

Wenn Sie bereit sind, über die systemeigenen cmd.exe-Befehle hinauszugehen, ist eine weitere Option mein JREN.BAT-Dienstprogramm zum Umbenennen, das Optionen zum Konvertieren von Namen in Groß- oder Kleinbuchstaben unterstützt. Es ist ein reines Skript (Hybrid-JScript / Batch), das nativ auf jedem Windows-Computer ab XP ausgeführt wird - es werden keine Drittanbieter-Exe-Dateien benötigt. Die vollständige Dokumentation ist integriert - Sie können von der Befehlszeile aus jren /?oder über jren /??die Seitenausgabe zugreifen .

Mit JREN ist die rekursive Lösung so einfach wie:

jren "^" "" /s /l 
Funktioniert super. Zu Ihrer Information entfernen Sie den `/ ad`-Schalter, und auch die Ordnernamen werden klein geschrieben. Keith vor 7 Jahren 1
Ich habe versucht, es als Batch-Datei zu speichern und es in system32 zu platzieren, sodass ich es jederzeit mit einem einzigen Befehl ausführen konnte. Ergebnisse in diesem Fall: `" D "') war zu diesem Zeitpunkt unerwartet.` Die Ausführung als Direktbefehl funktioniert einwandfrei, funktioniert jedoch nicht als Batchdatei. Ich bin nicht sicher, wie es als Batch-Datei funktionieren soll, aber ich dachte, ich würde mich dem Problem stellen. Don Cullen vor 6 Jahren 0
@DonCullen - Es ist die Standardsyntax, dass FOR-Variablenprozente verdoppelt werden müssen, wenn FOR innerhalb eines Batch-Skripts verwendet wird. Daher muss sich% D in %% D und% F in %% F ändern, wenn Sie den Befehl in ein Batch-Skript einfügen. dbenham vor 6 Jahren 1
Jeden Tag etwas Neues lernen. Vielen Dank! Don Cullen vor 6 Jahren 0
5
Synetech

Mein persönliches Lieblings-Utility zum Umbenennen von Dateien ist der WildRename von Cylog . Neben vielen anderen Features kann es die Dateinamen ändern. Das Beste an WildRename ist wahrscheinlich, dass es reguläre Ausdrücke unterstützt!

5
wc.matteo

"Recursive" version of the accepted answer (that works*)

for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"') do (for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g"))


The first loop

for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"')

Gets a list of the absolute paths of all the directories inside the current (including it):

C:\Foo>

  • C:\Foo\TO.txt

  • C:\Foo\Bar\LOWER.txt

  • C:\Foo\Bar\Baz\CASE.txt


The second loop

for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g")

Gets a list of all the file names (or file and directory names if you take out the /a-d switch) inside each of the absolute paths found by the first loop, and converts the name of these files to lowercase.

  • C:\Foo\TO.txt

  • C:\Foo\Bar\LOWER.txt

  • C:\Foo\Bar\Baz\CASE.txt


* it needs two loops because the second argument to rename must be a file name and not an absolute path (as the one obtained by the /s switch).

Warum haben Sie "cmd / c" echo% cd% & `im ersten` for`? Das ist völlig unnötig. DavidPostill vor 8 Jahren 0
@DavidPostill `echo% cd%` fügt den aktuellen Ordner der Liste der _absolute-Pfade_ hinzu; und `cmd / c` macht` und `zum Kombinieren von Befehlen. Ich bin ein absoluter Noob in Bezug auf _Windows Batch Scripting_; Wenn Sie einen besseren Weg kennen, verbessern Sie die Antwort! wc.matteo vor 8 Jahren 0
Ausgezeichnete Arbeit für einen Noob. Ihre war die erste native cmd.exe-Befehlszeilenlösung, die tatsächlich funktioniert. Sie schlägt jedoch fehl, wenn ein Name mit einem Leerzeichen oder einem Semikolon beginnt. Die akzeptierte Antwort weist dasselbe Problem auf. Eine einfachere Antwort finden Sie unter [meine Antwort] (http://superuser.com/a/1103766/109090). Diese Funktion funktioniert auch mit führenden Leerzeichen oder Semikolons. dbenham vor 8 Jahren 0
Kann dies geändert werden, um eine niedrigere in eine Obergrenze umzuwandeln? Rishav vor 6 Jahren 0
3
DednDave

Sie könnten eine Strategie zur "Zeichenersetzung" verwenden ...

set Name=%Name:A=a% set Name=%Name:B=b% set Name=%Name:C=c% 

... und so weiter für Buchstaben AZ. Sie könnten es wahrscheinlich in Form einer FOR-Schleife implementieren.

1
Kevin Haines

http://www.dostips.com/DtCodeCmdLib.php#Function.toLower bietet eine einfache Funktion, die Sie in der Lage sein sollten, eine Batch-Datei aufzunehmen und aus dieser heraus aufzurufen.

Lassen Sie also die Batchdatei die Ordner / Dateinamen durchlaufen und rufen Sie diese Funktion auf, um die Kleinbuchstabenversion des Namens zu generieren.

1
Even Mien

Von http://windowsitpro.com/articles/index.cfm?articleid=81612 :

Mit nur Standardbefehlen habe ich LwrCase.bat und LwrCase_Folder.bat mit einem Skript versehen, um einen Dateinamen in Kleinbuchstaben umzubenennen oder alle Dateinamen in einem Ordner in Kleinbuchstaben umzubenennen.

Um einen Dateinamen in Kleinbuchstaben umzubenennen, verwenden Sie:

[call] LwrCase FullyQualifiedFileName 

Dabei ist FullyQualifiedFileName der vollständig qualifizierte Dateiname, der umbenannt werden soll.

Um alle Dateinamen in einem Verzeichnis umzubenennen, verwenden Sie:

[call] LwrCase_Folder FullyQualifiedDirectoryName [/S] 

Dabei ist FullyQualifiedDirectoryName der vollständig qualifizierte Ordnerpfad und / S ist ein optionaler Parameter, der auch Dateinamen in allen Unterordnern umbenennt.

Hinweis: LwrCase.bat verwendet den Schalter / L des DIR-Befehls, der Kleinbuchstaben zurückgibt.

LwrCase.bat enthält:

@echo off if {%1}=={} @echo Syntax: LwrCase FullyQualifiedFileName&goto :EOF if not exist %1 @echo LwrCase - %1 NOT found.&goto :EOF setlocal for /f "Tokens=*" %%a in ('@echo %~a1') do ( set file=%%a ) if /i "%file:~0,1%" EQU "d" @echo LwrCase - %1 is NOT a file.&endlocal&goto :EOF for /f "Tokens=*" %%f in ('dir %1 /L /b /a /a-d') do ( Rename %1 "%%f" ) endlocal 

LwrCase_Folder.bat enthält:

@echo off if {%1}=={} @echo Syntax: LwrCase_Folder FullyQualifiedDirectoryName&goto :EOF if not exist %1 @echo LwrCase_Folder - %1 NOT found.&goto :EOF setlocal for /f "Tokens=*" %%a in ('@echo %~a1') do ( set folder=%%a ) if /i "%folder:~0,1%" NEQ "d" @echo LwrCase_Folder - %1 is NOT a folder.&endlocal&goto :EOF pushd %1 set sw=/B /A /A-D if /i {%2}=={/S} set sw=%sw% %2 for /f "Tokens=*" %%f in ('dir %sw%') do ( call LwrCase "%%f" ) popd endlocal 
1
ubiquibacon

Das beste Programm dafür ist das Bulk Rename Utility . Es ist ein Werkzeug für Männer. Sie können sogar Regex verwenden, um Dateien und / oder Ordner umzubenennen. Es hat auch eine Shell-Integration (so dass Sie vom Explorer mit einem Rechtsklick ausführen können), was sehr schön ist. 64-Bit- und 32-Bit-Versionen verfügbar.