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-Key: 233957

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: Xaero1982
Xaero1982 Mar 28, 2014, updated at Mar 30, 2014 at 16:41:48 (UTC)
Goto Top
Edit: War viel zu lang ... lösung siehe unten face-smile
Member: Endoro
Solution Endoro Mar 28, 2014, updated at Mar 30, 2014 at 15:56:50 (UTC)
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.
Member: joe65
joe65 Mar 30, 2014 at 15:56:35 (UTC)
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