Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

CMD Sortieren von Dateien nach Dateiendung

Frage Entwicklung Batch & Shell

Mitglied: leerider

leerider (Level 1) - Jetzt verbinden

07.05.2009, aktualisiert 09.05.2009, 9275 Aufrufe, 7 Kommentare

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
Mitglied: Leobuck64
08.05.2009 um 08:04 Uhr
Hallo Mark,

ich versteh noch nicht ganz, was du vor hast.
Willst du die Dateien anschließend verschieben ?
Warum nimmst du nicht einfach den Explorer und sortierst nach Typ ?

Das geht nicht so recht aus deiner Frage hervor !

Gruß Leo
Bitte warten ..
Mitglied: maretz
08.05.2009 um 12:32 Uhr
ein

dir /?

hätte geholfen...

dir /OE

gibt die Dateien nach Endung sortiert aus...
Bitte warten ..
Mitglied: leerider
08.05.2009 um 20:14 Uhr
ja hallo... also das mim dir /OE hab ich eh schon versucht nur scheiter ich dann an dem auslesen der zeilen aus der txt-Datei weil die ersten Zeilen ja keine Dateien sind sondern nur die bezeichnung des Laufwerks usw.

und ja, ich möcht sie dann in ordner verschieben... dachte vll gehts einfacher als über das dir /OE

wenn DIR /OE funktioniert dann ist es eh ok, nur hab ich eben probleme mit dem auslesen aus der datei, wen mir da wer weiterhelfen kann glaub ich wär mir schon geholfen

Grüße Mark
Bitte warten ..
Mitglied: Biber
08.05.2009 um 23:12 Uhr
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 ">"]
01.
>for %i in ("cmd" "zip" "pdf") do @echo if not exist .\%~iFiles md .\%~iFiles 
02.
if not exist .\cmdFiles md .\cmdFiles 
03.
if not exist .\zipFiles md .\zipFiles 
04.
if not exist .\pdfFiles md .\pdfFiles 
05.
 
06.
D:\temp> 
07.
>for %i in (*.cmd *.zip *.pdf) do @for /f "tokens=* delims=." %a in ("%~xi") do @echo move ".\%i" ".\%aFiles\" 
08.
move ".\2echoes.cmd" ".\cmdFiles\" 
09.
move ".\TestTimer.cmd" ".\cmdFiles\" 
10.
move ".\DupsByExt.cmd" ".\cmdFiles\" 
11.
move ".\CallelCmd1.cmd" ".\cmdFiles\" 
12.
move ".\GetEnDeCfg.cmd" ".\cmdFiles\" 
13.
move ".\GetEnDeCfgDaSilva.cmd" ".\cmdFiles\" 
14.
move ".\fmtoutcsv.cmd" ".\cmdFiles\" 
15.
move ".\ewc120.zip" ".\zipFiles\" 
16.
move ".\produkey.zip" ".\zipFiles\" 
17.
move ".\geProductKey.zip" ".\zipFiles\" 
18.
move ".\shortcutkeys.zip" ".\zipFiles\" 
19.
move ".\BrowseForFile.vbs.zip" ".\zipFiles\" 
20.
move ".\datetime_examp.zip" ".\zipFiles\" 
21.
move ".\getres.zip" ".\zipFiles\" 
22.
move ".\getprn.zip" ".\zipFiles\" 
23.
move ".\Netprotect_WinXP_SecurityGuide.pdf" ".\pdfFiles\" 
24.
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
Bitte warten ..
Mitglied: leerider
09.05.2009 um 14:18 Uhr
ah ok, irgendwie versteh ich grad nur Streichelzoo, nicht mehr... =|

aber danke

das mit dem /B wie billig ist ja wirklich billig... =P und ichhab jetzt ein wenig damit rumgespielt und was gebastelt, nur leider überspringt das batch beim auslesen au der txt-Datei einige Dateien und ich weiß nicht warum... vll kann mir da ja noch wer helfen...

@Biber Danke für die Mühen aber ich versteh grad garnicht was du da gemacht hast und wenn ichs versuch funktioniert auch nicht wirklich...
01.
@ echo off 
02.
 
03.
dir /OE /B> Ausgabe.txt 
04.
 
05.
FOR /F "skip=2 delims=" %%i IN (Ausgabe.txt) DO call :Sortieren "%%i" 
06.
 
07.
:Sortieren 
08.
 
09.
echo Datei %~1 wird bearbeitet 
10.
set Dateiname=%~1 
11.
 
12.
If %Dateiname%==Ausgabe.txt goto :eof 
13.
 
14.
set Endung=%Dateiname:~-4,4% 
15.
 
16.
echo %Dateiname% 
17.
echo %Endung% 
18.
 
19.
MD %Endung% 
20.
 
21.
pause
Es fehlt noch das verscheiben der Dateien aber das sollte dann kein Problem mehr darstellen... nur überspringt das batch bei der ordnererstellung einige Dateien und zwar nicht immer die selben, sondern jedesmal wenn ichs versuch andre bzw. mehr oder weniger... Warum macht es sowas? =(

Grüße Mark
Bitte warten ..
Mitglied: Biber
09.05.2009 um 15:43 Uhr
Moin Mark,

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
Bitte warten ..
Mitglied: leerider
09.05.2009 um 18:14 Uhr
Was soll ich sagen... Funktioniert =)

Danke an alle

Spezielles Dankeschön an Biber ;)


eindeutig und schön gelöst...

Grüße Mark
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (11)

Frage von clragon zum Thema Batch & Shell ...

Windows Server
Server sehr langsam bei vielen kleinen Dateien (5)

Frage von MichiBLNN zum Thema Windows Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...