CMD Sortieren von Dateien nach Dateiendung
Hallo erstmal
Hab das Problem dass ich ein einem Ordner extremst viele Dateien habe, wobei ich diese Dateien nach der Dateiendung sortieren möchte.
Wobei es eine Ausnahme gibt weil zB. die Dateiendung .dwg und .bak in einen Ordner gehören.
Hab jetzt einiuge verusche gemacht und da mein CMD-Wissen nicht so weit entwickelt ist hab ich einige Probleme damit.
Hoffe jemand kann mir bei meinem Problem helfen...
Grüße Mark
Hab das Problem dass ich ein einem Ordner extremst viele Dateien habe, wobei ich diese Dateien nach der Dateiendung sortieren möchte.
Wobei es eine Ausnahme gibt weil zB. die Dateiendung .dwg und .bak in einen Ordner gehören.
Hab jetzt einiuge verusche gemacht und da mein CMD-Wissen nicht so weit entwickelt ist hab ich einige Probleme damit.
Hoffe jemand kann mir bei meinem Problem helfen...
Grüße Mark
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 115555
Url: https://administrator.de/forum/cmd-sortieren-von-dateien-nach-dateiendung-115555.html
Ausgedruckt am: 05.04.2025 um 10:04 Uhr
7 Kommentare
Neuester Kommentar
Moin leerider,
wenn und falls Du die Strategie über DIR /OE und eine Zwischendatei gehen wolltest, dann nutze den DIR-Schalter /b wie /billich. Siehe DIR/? oder noch besser DIR /oe /b am CMD-Prompt.
Wenn Du dann ohnehin am CMD-Prompt bist, dann spiel mal ein bisschen mit dieser Strategie weiter:
[eingegebene Zeilen beginnen mit ">"]
Ich habe jetzt mal im Beispiel nur die *.zip, *.cmd und *.pdf-Files im aktuellen Verzeichnis (".\") behandelt.
Aber Du solltest es sinngemäß auf Deinen Fall übertragen können.
Das "@Echo" dient nur zum Testen und Spielen -sollte das rauskommen, was du brauchst: "Echo" weglassen.
Grüße
Biber
wenn und falls Du die Strategie über DIR /OE und eine Zwischendatei gehen wolltest, dann nutze den DIR-Schalter /b wie /billich. Siehe DIR/? oder noch besser DIR /oe /b am CMD-Prompt.
Wenn Du dann ohnehin am CMD-Prompt bist, dann spiel mal ein bisschen mit dieser Strategie weiter:
[eingegebene Zeilen beginnen mit ">"]
>for %i in ("cmd" "zip" "pdf") do @echo if not exist .\%~iFiles md .\%~iFiles
if not exist .\cmdFiles md .\cmdFiles
if not exist .\zipFiles md .\zipFiles
if not exist .\pdfFiles md .\pdfFiles
D:\temp>
>for %i in (*.cmd *.zip *.pdf) do @for /f "tokens=* delims=." %a in ("%~xi") do @echo move ".\%i" ".\%aFiles\"
move ".\2echoes.cmd" ".\cmdFiles\"
move ".\TestTimer.cmd" ".\cmdFiles\"
move ".\DupsByExt.cmd" ".\cmdFiles\"
move ".\CallelCmd1.cmd" ".\cmdFiles\"
move ".\GetEnDeCfg.cmd" ".\cmdFiles\"
move ".\GetEnDeCfgDaSilva.cmd" ".\cmdFiles\"
move ".\fmtoutcsv.cmd" ".\cmdFiles\"
move ".\ewc120.zip" ".\zipFiles\"
move ".\produkey.zip" ".\zipFiles\"
move ".\geProductKey.zip" ".\zipFiles\"
move ".\shortcutkeys.zip" ".\zipFiles\"
move ".\BrowseForFile.vbs.zip" ".\zipFiles\"
move ".\datetime_examp.zip" ".\zipFiles\"
move ".\getres.zip" ".\zipFiles\"
move ".\getprn.zip" ".\zipFiles\"
move ".\Netprotect_WinXP_SecurityGuide.pdf" ".\pdfFiles\"
move ".\25_Jahre_Lagerhaus.pdf" ".\pdfFiles\"
Ich habe jetzt mal im Beispiel nur die *.zip, *.cmd und *.pdf-Files im aktuellen Verzeichnis (".\") behandelt.
Aber Du solltest es sinngemäß auf Deinen Fall übertragen können.
Das "@Echo" dient nur zum Testen und Spielen -sollte das rauskommen, was du brauchst: "Echo" weglassen.
Grüße
Biber
Moin Mark,
okay, dann führen wir erstmal Deinen Ansatz weiter.
Ändere bitte in Deinem Schnipsel folgendes:
-> neuer Durchlauf
Grüße
Biber
okay, dann führen wir erstmal Deinen Ansatz weiter.
Ändere bitte in Deinem Schnipsel folgendes:
- füge nach dem "@echo off" noch ein " & SetLocal" ein. Bedeutet: Alle Variablen, die Du mit SET deklarierst, gelten nur für Deinen Batch.
- Schreibe die temporäre Datei Ausgabe nicht in das Verzeichnis, in dem Du Ordnung schaffen willst. Schreibe (und lese) die Datei im %temp%-Verzeichnis. [ Dir /oe /b >%temp%\Ausgabe.txt ... entsprechen %temp%\Ausgabe als Quelle in der FOR /F-Anweisung. Die IF-Abfragen fallen dadurch weg.
- lass das "skip=2" weg.. wozu auch immer das sein sollte.
- die Variable %Endung% ermittle nicht mit [set Endung=%Dateiname:~-4,4%], sondern als [%~x1] == als "Endung von Parameter 1".
-> neuer Durchlauf
Grüße
Biber