Die Möglichkeit mittels For -F Schleife ein Txt-File neu zusammenstellen prüfen
OS = WIN10 Prof, / CMD
Hallo @ all
Ich darf hoffentlich wieder auf meine mittlerweile bekannten Liste zurück kommen:
Auszug aus dieser Liste (Zeile 1 und 2 von ca. hundert)
Das Ziel ist nun diese beiden Zeilen in ein neues Textfile (oder erst in eine Variable zu schreiben (hundert mal Textfile öffnen, schreiben, schließen das dauert etwas länger, ich kann mich noch düster an vor 20 Jahren erinnern dass da was war)), aber die beiden letzten Token in Zeile 1 sollen nicht mit übertragen werden (Uhrzeit und PM bzw. AM)
Alle beiden Zeilen können verschieden lang sein, aber jedes Pärchen hat die selbe "Logik".
Das Ergebnis sollte dann sein:
Three Plus - Love You for Life.
Meine Frage dazu: meint Ihr das lässt sich überhaupts so machen wie ich denke?
Hat jemand eine Lösungsansatz oder meint ihr ich kann das ganze Projekt in die Tonne treten und dafür lieber in der Hängematte abhängen?
Mein Lösungansatz war eigentlich (grob skizziert)
Eine FOR-Schleife über das txt-File, Zeile 1 auflösen in mehrere Tokens, diese Token %%* dann in die Variable%Zaehler schreiben bis eine zwischengeschaltete „findstr-suche“ nach den 3 Auschlusskriterien in eine abbricht, den Zähler hochrechen.
Bei dem nächsten Lauf der For-Schleife das selbe Spiel wieder von vorne, aber eben dann die Variable%Zaehler prüfen und die Ausgabe in die Variable%Zaehler% schieben. Die beiden Variablen dann in das neue Textfile schieben und Zaehler wieder auf 1 setzten.
Mittlerweile hab ich schon vor lauter Verzweiflung ausm Keller meine vor 20 Jahren erstellten “Structogramme“ geholt und einen fast kompletten Block verschrieben.
Aber viele der DOS-Befehle aus dieser Zeit sind nicht mehr funktionsfähig wie if exist, defined oder ich mach was falsch.
Mit besten Grüßen
Heinze
Hallo @ all
Ich darf hoffentlich wieder auf meine mittlerweile bekannten Liste zurück kommen:
Auszug aus dieser Liste (Zeile 1 und 2 von ca. hundert)
Love You for Life 10:39 PM (::Titel)
Three Plus (:: Gruppe)
.
.
.
Das Ziel ist nun diese beiden Zeilen in ein neues Textfile (oder erst in eine Variable zu schreiben (hundert mal Textfile öffnen, schreiben, schließen das dauert etwas länger, ich kann mich noch düster an vor 20 Jahren erinnern dass da was war)), aber die beiden letzten Token in Zeile 1 sollen nicht mit übertragen werden (Uhrzeit und PM bzw. AM)
Alle beiden Zeilen können verschieden lang sein, aber jedes Pärchen hat die selbe "Logik".
Das Ergebnis sollte dann sein:
Three Plus - Love You for Life.
Meine Frage dazu: meint Ihr das lässt sich überhaupts so machen wie ich denke?
Hat jemand eine Lösungsansatz oder meint ihr ich kann das ganze Projekt in die Tonne treten und dafür lieber in der Hängematte abhängen?
Mein Lösungansatz war eigentlich (grob skizziert)
Eine FOR-Schleife über das txt-File, Zeile 1 auflösen in mehrere Tokens, diese Token %%* dann in die Variable%Zaehler schreiben bis eine zwischengeschaltete „findstr-suche“ nach den 3 Auschlusskriterien in eine abbricht, den Zähler hochrechen.
Bei dem nächsten Lauf der For-Schleife das selbe Spiel wieder von vorne, aber eben dann die Variable%Zaehler prüfen und die Ausgabe in die Variable%Zaehler% schieben. Die beiden Variablen dann in das neue Textfile schieben und Zaehler wieder auf 1 setzten.
Mittlerweile hab ich schon vor lauter Verzweiflung ausm Keller meine vor 20 Jahren erstellten “Structogramme“ geholt und einen fast kompletten Block verschrieben.
Aber viele der DOS-Befehle aus dieser Zeit sind nicht mehr funktionsfähig wie if exist, defined oder ich mach was falsch.
Mit besten Grüßen
Heinze
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 570128
Url: https://administrator.de/contentid/570128
Ausgedruckt am: 25.11.2024 um 20:11 Uhr
3 Kommentare
Neuester Kommentar
Nimm doch gleich die PS zur Hand ... lässt sich auch in ne Batch einbauen wenn man unbedingt muss...
@echo off
set "INPUT=D:\datei.txt"
set "OUTPUT=D:\datei_neu.txt"
powershell -EP ByPass -C "$c = gc '%INPUT%';for ($i = 0; $i -lt $c.Count; $i +=2){$($c[$i+1].trim()) + ' - ' + $(($c[$i] -replace '[\d:\s]+ (AM|PM)\s*$').trim())}" >"%OUTPUT%"
So ziemlich das gleiche wie in der Folgefrage, drehst du halt nur die Reihenfolge um ...
2 Zeilen auf txt-file zusammenzügen mittels FOR -f und IF
2 Zeilen auf txt-file zusammenzügen mittels FOR -f und IF