joe65
Goto Top

Dateierweiterungen in eine Textdatei schreiben

Hallo,

ich hab nach längerer Zeit wieder mal ein Batch-Problem.
Ich möchte alle Dateierweiterungen (txt, docx, jpg, etc.) die in einem bestimmten Verzeichnis vorkommen in eine Textdatei(=Ergebnisdatei) schreiben.
Die Dateierweiterung soll dabei aber nicht mehr als ein Mal in der Textdatei auftauchen.
Der unten angegebene Code schreibt mir aber die Dateierweiterung mehrfach (so oft sie eben vorkommt) in die Textdatei.
Kann man das so machen, das eine Dateierweiterung nur ein Mal in der Textdatei erscheint?

@echo off
set "Ergebnisdatei=Dateierweiterungen.txt"  
for /f "delims=" %%i in ('dir "d:\quelle" /s /b /a-d') DO @echo %%~xi >> %Ergebnisdatei%  
pause

Content-ID: 233957

Url: https://administrator.de/contentid/233957

Ausgedruckt am: 25.11.2024 um 18:11 Uhr

Xaero1982
Xaero1982 28.03.2014, aktualisiert am 30.03.2014 um 18:41:48 Uhr
Goto Top
Edit: War viel zu lang ... lösung siehe unten face-smile
Endoro
Lösung Endoro 28.03.2014, aktualisiert am 30.03.2014 um 17:56:50 Uhr
Goto Top
Für Batch genügt da ein 2½-Zeiler:
@ECHO OFF &SETLOCAL disableDelayedExpansion
FOR %%A IN (*) DO IF "%%~XA"=="" (SET /a .+=1) ELSE SET /a %%~XA+=1 2>nul  
(FOR /f "tokens=1*delims==" %%A IN ('SET .') DO ECHO(%%A: %%Bx)>extensions.txt  

Gruss Endoro.
joe65
joe65 30.03.2014 um 17:56:35 Uhr
Goto Top
Hallo Endoro,

Super! Genau das habe ich gebraucht!
Trotzdem habe ich aber noch 2 Fragen zu deinem Code:
1) Woher weis deine Variable %%B in der 2. Codezeile die Anzahl?
2) Warum muss in der 3. Codezeile am Anfang ein Klammer-Auf Zeichen stehen? Wenn man das nicht macht, dann steht am Ende noch ein Klammer-Zu Zeichen. Aber mir ist nicht klar warum.

Die Frage werde ich als gelöst schließen.
Danke nochmal!

Grüße
joe65