mp-home
Goto Top

Zeichen in Textdatei kürzen

Per Batch Verzeichnisse in .txt Datei schreiben und anschliessend .txt ändern/kürzen

Hallo an alle,

habe ein Problem beim erstellen einer Batchdatei und hoffe natürlich auf Eure Hilfe.
Ich möchte alle Alben eines mp3 Verzeichnisses aufgelistet in eine .txt Datei schreiben.

Das funktioniert bislang so:

FOR %%h IN (D E F) DO if exist %%h: dir /s %%h:\*.mp3 >>test.txt
FIND "Verzeichnis von" test.txt > liste.txt

als Ergebnis (liste.txt) erhalte ich nun:

TEST.TXT
Verzeichnis von E:\Ipod\MP3\Alanis Morissette\1998 - Supposed Former Infatuation Junkie
Verzeichnis von E:\Ipod\MP3\Alanis Morissette\2002 - Under Rug Swept
Verzeichnis von E:\Ipod\MP3\Alanis Morissette\2004 - So Called Chaos
...

Wie kann ich nun die liste.txt um die Zeichenfolge 'Verzeichnis von' kürzen und ggf. in eine neue .txt.datei schreiben.

Content-ID: 37088

Url: https://administrator.de/forum/zeichen-in-textdatei-kuerzen-37088.html

Ausgedruckt am: 23.12.2024 um 06:12 Uhr

Biber
Biber 01.08.2006 um 15:25:26 Uhr
Goto Top
Moin mp-home,

Demo vom Cmd-Prompt aus:
(=15:18:45  D:\temp=)
>for /f "tokens=3,*" %a in (text.txt) do @echo %a %b  
E:\Ipod\MP3\Alanis Morissette\1998 - Supposed Former Infatuation Junkie
E:\Ipod\MP3\Alanis Morissette\2002 - Under Rug Swept
E:\Ipod\MP3\Alanis Morissette\2004 - So Called Chaos

Im Batch entsprechend (mit Umleitung in neue Datei):
for /f "tokens=3,*" %%a in (text.txt) do @echo %%a %%b>>textcut.txt  

HTH Biber

P.S. Kannst es oben in einem Schritt abfackeln:
FOR %%h IN (D E F) DO if exist %%h: dir /s %%h:\*.mp3|FIND "Verzeichnis von" >>liste.txt  
mp-home
mp-home 01.08.2006 um 15:34:34 Uhr
Goto Top
Hallo Biber,

erstmal recht herzlichen Dank. Funktioniert prima.
Vielleicht bei Zeiten noch ne kleine Erklärung dazu, damit ich nicht ganz so dumm sterbe :o)

Gruss
Biber
Biber 01.08.2006 um 16:11:56 Uhr
Goto Top
Freut mich, Markus,

zu erklären ist da nicht so viel.
Mit dem "FOR /F"-Befehl werden Zeilen in einzelne "Token" (in etwa: Worte, Bestandteile) zerlegt.
Das Standard-Trnnzeichen zwischen "Token" ist ein Leerzeichen, und wenn ich von einem "Satz"/einer Zeile der vorliegenden Form alle Token ab dem dritten haben will sowie pauschal "alles, was danach kommt", dann ist dafür die Syntax
FOR /f "Tokens=3,*" ......

Im Prinzip kannst Du sogar alles mit einer Zeile vom CMD-Prompt abfeuern:
@FOR %h IN (D E F) DO @for /f "tokens=3,*" %a in ('dir /s %h:\*.mp3 ^2^>nul^|FIND "Verzeichnis von"') do @echo %a %b  
- oder - etwas lesbarer im Batch auf mehrere Zeilen verteilt:
:: ---snipp ListMyMp3s.bat
@FOR %%h IN (D E F) DO (
 @for /f "tokens=3,*" %%a in ('dir /s %%h:\*.mp3 ^2^>nul^|FIND "Verzeichnis von"') do @echo %%a %%b >>FckTheGEMA.txt  
 )
::---snapp ListMyMp3s.bat

HTH Biber
16568
16568 01.08.2006 um 16:12:18 Uhr
Goto Top
Wow, der erste, der nicht nur danke sagt, sondern auch den Sinn verstehen will.

Goil.


Lonesome Walker
Biber
Biber 01.08.2006 um 16:16:29 Uhr
Goto Top
@lsw
der erste, der nicht nur danke sagt, sondern auch den Sinn verstehen will
Ja, irgendwie werde ich richtig euphorisch... es war auch gestern schon ein Neuer da, der "funktioniert nicht" statt "geht nicht" geschrieben hat. *strahl*
So wie mp-home es ja auch getan hat oben.. *doppelstrahl*

Vielleicht ist die heutige Jugend doch besser als die meiner Generation... *seufz*

Biber
16568
16568 01.08.2006 um 16:17:42 Uhr
Goto Top
face-big-smile Man soll die Hoffnung nicht aufgeben...


Lonesome Walker
mp-home
mp-home 01.08.2006 um 16:41:50 Uhr
Goto Top
mp-home
mp-home 01.08.2006 um 16:44:18 Uhr
Goto Top
Hallo Biber,

das mit dem Token hab ich soweit, danke.
Was ich noch nicht verstanden habe:

@echo %%a %%b
und
^2^>nul^

Danke

PS: Vielen Dank für die Blumen. Die Jugend von heute ist in diesem Fall auch schon 37 Jahre alt. Natürlich möchte ich auch gerne wissen, was ich mache.
Ich werde jedenfalls heute Abend ein Becks auf Euch trinken.
16568
16568 01.08.2006 um 16:45:57 Uhr
Goto Top
Tja Biber, aus mit der Illusion face-big-smile


Lonesome Walker
Biber
Biber 01.08.2006 um 16:56:03 Uhr
Goto Top
Also,

Was ich noch nicht verstanden habe:

@echo %%a %%b
und
^2^>nul^

Die Token, die ich "haben will" werden automatisch hochgezählt.
Wenn ich "Tokens=1-6" haben wollte bei einer Zählvariablen %a...
dann würden rechts der "DO..."-Anweisung diese Token als %a %b %c %d %e %f zur Verfügung stehen.

Wenn ich nur "Tokens=3,*" haben will, sprich "Token 3 und den Rest", dann fallen heraus "%a" und "%b"
Im Batch werden jeweils zwei %-Zeichen [%%a] vor Zählvariablen geschrieben; am CMD-Prompt nur eins [%a].
Das etwas kryptische "^2^>nul" ist eigentlich ein maskiertes "2>nul"
Mit "2>nul" nach einem beliebigen internen oder externen CMD-Befehl werden alle Fehlermeldungen wie zum Beispiel "Datei nicht gefunden" beim DIR-Befehl entsorgt.

Da ich in der FOR-Klammer eine "Anweisung in einer Anweisung" habe, muss ich die CMD-Steuerzeichen ">" und "2" mit einem Caret "^" maskieren.

Thats all.

P.S. @lsw
Ach, wenn der Becks trinkt, kann es kein schlechter Mensch sein. face-wink

Frank, der Biber aus Bremen *Becksplongggggggg
mp-home
mp-home 01.08.2006 um 17:12:20 Uhr
Goto Top
So, vielen Dank für die Hilfe, müsste es wohl soweit verstanden haben.
Biber
Biber 03.08.2006 um 19:12:55 Uhr
Goto Top
So, vielen Dank für die Hilfe, müsste es wohl soweit verstanden haben.
Sollte Dir so etwas noch einmal passieren in diesem Forum, dann bitte den Beitrag auf "Gelöst" setzen. Danke.
face-wink

Diesmal mach ich das...
mp-home
mp-home 04.08.2006 um 11:53:54 Uhr
Goto Top
Hallo Biber,

hab das auch versucht, aber den Klick nicht gefunden.
Vielleicht hierzu noch einen kleinen Tip.

Gruss Markus
Biber
Biber 04.08.2006 um 12:34:37 Uhr
Goto Top
Moin mp-home,

soweit es aus Überlieferungen kenne (habe noch keine Frage gestellt hier):
- Wenn Du angemeldet bist...
- Auf den Eröffnungsbeitrag, Button "Editieren" drücken
- unter den Texteingabefenstern, in denen der Beitrag angezeigt wird, sollen sich mehrere Ankreuz-Kästchen befinden
- das Kästchen "Dieser Beitrag gilt als gelöst" (sinngemäß) per Mausklick mit einem Häkchen versehen.

Schönes Wochenende
Biber
mp-home
mp-home 04.08.2006 um 13:34:35 Uhr
Goto Top
Hab es nachgeschaut. Stimmt natürlich.
Nochmals vielen Dank und natürlich auch ein schönes Wochenende.

Gruss Markus