2 Zeilen auf txt-file zusammenzügen mittels FOR -f und IF
Windows 10 Prof / CMD
Hallo Leute
mittlerweile habe ich wieder einige Stunden mit suchen und lesen und testen verbracht, nun steh ich wied eraufm Schlauch.
Ich möchte aus einem txt-File immer 2 Zeilen zusammen fassen.
Auszug aus dem txt-File "Muster.txt"
das Ergebniss sollte sein:
Folgenden Code hab ich mir zurechtgebastelt, nur tut er alles nur nicht funktionieren.
Mittlerweile finde ich vor lauter rumprobieren nichts mehr.
Irgendwo im IF-Teil liegt der Hund begraben.
ich habe schon die Anweisungen zw. den () in "" und ' gesetzt mit && verknüpft und und aber es werden die Set=zaehleranweisuge nicht umgesetz
aktulle Ausgabe die ich erhalte:
Wer kann mir helfen und auch gleich erklären wiesowoweshalbwarum der Fehler war - in der Logik im Code oder wasweisichwo.
PS-Scripte helfen mir leide rnicht weiter da ich die ja noch viel weniger verstehe und ich mich mit PS auch nicht mehr beschäftigen will.
Herzlichen Dank im voraus für Eure Hilfe
Gruss Heinze
Hallo Leute
mittlerweile habe ich wieder einige Stunden mit suchen und lesen und testen verbracht, nun steh ich wied eraufm Schlauch.
Ich möchte aus einem txt-File immer 2 Zeilen zusammen fassen.
Auszug aus dem txt-File "Muster.txt"
Berger Franz 85555
Zeile21
Huber Kurt 84441
Zeile22
Karl Franz Musterstatt 89999
Zeile23
Georg Maria Oberprumpftel Hamburg 98888
Zeile24
das Ergebniss sollte sein:
Berger Franz - Zeile21
Huber Kurt - Zeile22
.
.
Folgenden Code hab ich mir zurechtgebastelt, nur tut er alles nur nicht funktionieren.
Mittlerweile finde ich vor lauter rumprobieren nichts mehr.
@echo off
setlocal EnableDelayedExpansion
set Liste=D:\muster.txt
set Ziel=D:\musterneu.txt
set name=NIX
set name2=2malnix
set zaehler=1
set ausgabe=auchnix
for /f "usebackq tokens=* delims=;" %%i in (%Liste%) do (
set name=%%i
set name=!name:~0,-6!
set name2=%%i
echo !zaehler!
if !zaehler!==1 (
echo !name! set zaehler=2
) else (
echo !name2! set zaehler=1
)
)
REM: hier sollte dann der ausgabestring zusammengebaut werden und in das File: D:\musterneu.txt geschrieben werden
REM: hier sollte dann der ausgabestring zusammengebaut werden und in das File: D:\musterneu.txt geschrieben werden
REM call %Ziel%
Irgendwo im IF-Teil liegt der Hund begraben.
ich habe schon die Anweisungen zw. den () in "" und ' gesetzt mit && verknüpft und und aber es werden die Set=zaehleranweisuge nicht umgesetz
aktulle Ausgabe die ich erhalte:
1
Berger Franz set zaehler=2
1
Z set zaehler=2
1
Huber Kurt set zaehler=2
1
Z set zaehler=2
1
Wer kann mir helfen und auch gleich erklären wiesowoweshalbwarum der Fehler war - in der Logik im Code oder wasweisichwo.
PS-Scripte helfen mir leide rnicht weiter da ich die ja noch viel weniger verstehe und ich mich mit PS auch nicht mehr beschäftigen will.
Herzlichen Dank im voraus für Eure Hilfe
Gruss Heinze
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 570972
Url: https://administrator.de/forum/2-zeilen-auf-txt-file-zusammenzuegen-mittels-for-f-und-if-570972.html
Ausgedruckt am: 24.12.2024 um 03:12 Uhr
5 Kommentare
Neuester Kommentar
@echo off &setlocal EnableDelayedExpansion
:: Eingabedatei
set "liste=D:\muster.txt"
:: Ausgabedatei
set "ziel=D:\musterneu.txt"
:: Positionsindikator
set "blockstart=1"
>"%ziel%" (for /f "usebackq delims=" %%a in ("%liste%") do (
REM Zeile variablen zuweisen
set "line=%%a"
REM wenn Positionsindikator = 1 dann
if "!blockstart!" == "1" (
REM passe Zeile an
set "newline=!line:~0,-6! - "
REM setze Positionsindikator auf 0
set blockstart=0
) else (
REM gebe Variable mit ergänzender Zeile 2 aus
echo.!newline!%%a
REM setze Ausgabevariable zurück
set "newline="
REM für nächsten Druchlauf Positionsindikator auf 1 setzen
set "blockstart=1"
)
))
Zitat von @Heinze:
Wenn ich mir das so durchschaue finde ich leider mehr Fragen für mich als wie " ahh so geht das - da war mein Fehler!"
Eigentlich ist jede Zeile kommentiert ... wozu hab ich das dann gemacht??Wenn ich mir das so durchschaue finde ich leider mehr Fragen für mich als wie " ahh so geht das - da war mein Fehler!"
Die Lösung mit : >"%ziel%" (for /f "usebackq delims=" %%a in ("%liste%") do ... ist mir komplett neu.. .
Kannsst du mir das mal erklären bitte, ich will ja auch noch was lernen und was verstehen von der Lösung.
Alles was innerhalb der folgenden Klammer ausgegeben wird landet in der Textdatei, ganz einfach .Kannsst du mir das mal erklären bitte, ich will ja auch noch was lernen und was verstehen von der Lösung.
Manchmal setzt du dieverschiedenen Anweisung zB. set "blockstart=1" in "" machmal nicht - wieso so?
Das war nur ein Versehen beim letzten set, generell ist das Einfassen in Anführungszeichen eine gute Idee weil sich sonst Leerzeichen hinter den Werten als Fehlerquelle erweisen könnten, zweitens (ist hier in diesem Beispiel zwar nicht von Belang) wenn Leerzeichen in Pfaden vorkommen.Nun hab ich ein lauffähiges Script aber immer noch keinen Durchblick
Wozu habe ich jede Zeile denn kommentiert?? War wohl mal wieder für die Katz, au Banan .Irgendwie ist mein Wissen komplett eingerostet und überholt, naja is tauch schon 15 - 20 Jahre her dass ich mich damit gross beschäftigt habe.
Dort sollte es am besten auch bleiben, lerne besser gleich Powershell wenn du unter Windows hantierst, davon hast du definitiv mehr als von diesem 80er Jahre Spökes.Außerdem dachte ich, wir befinden uns hier doch in einem Admin-Forum wo man nicht alle zwei Threads Batch Allgemeinwissen beibringen muss, zumal diese seit 40 Jahren allseits bekannt sind und man diese auch überall im Web nachlesen kann?!