Mit Batch Text an bestimmter Stelle in anderer Batch einfügen
Hallo zusammen,
als Ausgangspunkt dient mir folgende Frage: Mittels Batch an bestimmte Stelle der win.ini schreiben.
ich bin auf diesen Eintrag gestoßen, da ich selbst ein Batch-Script schreiben muß, welches an eine gewisse Position einen bestimmten Text hängt.
Die Version von bastla habe ich genommen und für meine Zwecke etwas angepasst.... dachte auch, es würde funktionieren.
Mein Problem ist allerdings das folgende:
In meinem Fall handelt es sich um Batch-Dateien, die angepasst werden müssen. Lasse ich das Script laufen, wird auch eine Ausgabe mit eingefügtem Text erzeugt, leider werden die Sprungmarken aus der Batch ohne "Doppelpunkt" übernomme.
Also
"text"
:sprungMarke
"text"
liefert
"text"
sprungMarke
"text"
Kann mir jemand sagen, wie ich mein Script anpassen muss? Ich komme einfach nicht drauf.
Wäre für jede Hilfe äußerst dankbar!
Viele Grüße
als Ausgangspunkt dient mir folgende Frage: Mittels Batch an bestimmte Stelle der win.ini schreiben.
ich bin auf diesen Eintrag gestoßen, da ich selbst ein Batch-Script schreiben muß, welches an eine gewisse Position einen bestimmten Text hängt.
Die Version von bastla habe ich genommen und für meine Zwecke etwas angepasst.... dachte auch, es würde funktionieren.
Mein Problem ist allerdings das folgende:
In meinem Fall handelt es sich um Batch-Dateien, die angepasst werden müssen. Lasse ich das Script laufen, wird auch eine Ausgabe mit eingefügtem Text erzeugt, leider werden die Sprungmarken aus der Batch ohne "Doppelpunkt" übernomme.
Also
"text"
:sprungMarke
"text"
liefert
"text"
sprungMarke
"text"
Kann mir jemand sagen, wie ich mein Script anpassen muss? Ich komme einfach nicht drauf.
Wäre für jede Hilfe äußerst dankbar!
Viele Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179263
Url: https://administrator.de/forum/mit-batch-text-an-bestimmter-stelle-in-anderer-batch-einfuegen-179263.html
Ausgedruckt am: 15.05.2025 um 23:05 Uhr
5 Kommentare
Neuester Kommentar
Moin Schwarzfahrer,
willkommen im Forum.
Es existieren zwei mitgelieferte FIND-Utilities, mit denen du eine Durchnummerierung aller Zeilen erreichen kannst - FIND.exe und FINDSTR.exe.
bastla verwendete in den o.a. Skript das neuere, etwas facegeliftete namens FindStr.exe mit dieser Syntax, um alle Zeilen inkl. Leerzeilen durchzunummerieren:
[Demo am CMD-Prompt]
--> so wird es verwendet und in der FOR/F-Anweisung die Nummerierung wieder entfernt, allerdings dadurch, dass der ":"/Doppelpunkt als Delimiter verwendet wird.
Da du aber die Doppelpunkte erhalten miusst, weiche auf FIND aus - das bietet den Delimiter "]" für deine Zwecke an.
Leider kann FIND aber nicht nach "$" = alle Zeilen mit CRLF suchen, also suchen wir nach allen Zeilen, die ein Suchwort NICHT enthalten (mit Option /v):
[Demo am CMD-Prompt]
--> die erste gezeigte FIND-Ausgabe enthält die Zeilennummern eingefasst in "[" und "]".
Die zweite Ausgabe (FindStr) zeigt das entsprechende Ergebnis von FindStr mit Option /v zum Vergleich.
Mit FOR /f "tokens=1* delims=]" %%i.... würdest du die wegbekommen.
Und die überflüssige Zeile "------MEINE.INI" mit einem angehängten "^|Find/V "----"
Demo
Grüße
Biber
willkommen im Forum.
Es existieren zwei mitgelieferte FIND-Utilities, mit denen du eine Durchnummerierung aller Zeilen erreichen kannst - FIND.exe und FINDSTR.exe.
bastla verwendete in den o.a. Skript das neuere, etwas facegeliftete namens FindStr.exe mit dieser Syntax, um alle Zeilen inkl. Leerzeilen durchzunummerieren:
[Demo am CMD-Prompt]
REM FindStr-Verwendung in einer ZEILE ...for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%TempTxt%"') ...
d:\temp>findstr /n $ meineini.ini
1:[MeineSection]
2:; eine Kommentarzeile mit ein paar == (Gleichheitszeichen) ==
3:; neuevar=wert
4:neuevar=wert
Da du aber die Doppelpunkte erhalten miusst, weiche auf FIND aus - das bietet den Delimiter "]" für deine Zwecke an.
Leider kann FIND aber nicht nach "$" = alle Zeilen mit CRLF suchen, also suchen wir nach allen Zeilen, die ein Suchwort NICHT enthalten (mit Option /v):
[Demo am CMD-Prompt]
d:\temp>find /v /n "blubberlutsch" meineini.ini
---------- MEINEINI.INI
[1][MeineSection]
[2]; eine Kommentarzeile mit ein paar == (Gleichheitszeichen) ==
[3]; neuevar=wert
[4]neuevar=wert
d:\temp>findstr /v /n "blubberlutsch" meineini.ini
1:[MeineSection]
2:; eine Kommentarzeile mit ein paar == (Gleichheitszeichen) ==
3:; neuevar=wert
4:neuevar=wert
--> die erste gezeigte FIND-Ausgabe enthält die Zeilennummern eingefasst in "[" und "]".
Die zweite Ausgabe (FindStr) zeigt das entsprechende Ergebnis von FindStr mit Option /v zum Vergleich.
Mit FOR /f "tokens=1* delims=]" %%i.... würdest du die wegbekommen.
Und die überflüssige Zeile "------MEINE.INI" mit einem angehängten "^|Find/V "----"
Demo
d:\temp>for /F "tokens=1* delims=]" %i in ('Find /v /n "blubberlutsch" meineini.ini^|find /v "---"') do @echo %j
[MeineSection]
; eine Kommentarzeile mit ein paar == (Gleichheitszeichen) ==
; neuevar=wert
neuevar=wert
Grüße
Biber
@Biber
Grüße
bastla
P.S.: Und Du schreibst Deine Batches immer noch ohne Verwendung von "blubberlutsch"?
Und die überflussige Zeile "------MEINE.INI" mit einem angehängten "^|Find/V "----"
... oder gleich vermeiden mitfor /F "tokens=1* delims=]" %i in ('Find /v /n "blubberlutsch"^<meineini.ini') do @echo %j
bastla
P.S.: Und Du schreibst Deine Batches immer noch ohne Verwendung von "blubberlutsch"?
[OT]
Moin bastla,

Schönes Wochenende
Biber
[/OT]
Moin bastla,
Zitat von @bastla:
P.S.: Und Du schreibst Deine Batches immer noch ohne Verwendung von "blubberlutsch"?
Na ja, ich speichere meine Oneliner ja selten als Batch ab, deshalb musste ich die Demo ja mit einer *.ini-Datei vorkaspern.. P.S.: Und Du schreibst Deine Batches immer noch ohne Verwendung von "blubberlutsch"?
Schönes Wochenende
Biber
[/OT]
Hallo DarkPassenger!
Wird's eventuell besser, wenn Du
verwendest (beachte den zweiten Delimiter; die anderen Änderungen sind nur Kosmetik)?
Das Einfügen der neuen Zeile (wenn diese offensichtlich aus einer Datei stammt) würde ich übrigens per
erledigen.
Grüße
bastla
Wird's eventuell besser, wenn Du
for /f "tokens=1* delims=" %%i in ('find /v /n "blubberlutsch"^<"%TempText%"') do if %%i leq %Zeile% >>"%Quelle%" echo.%%j
Das Einfügen der neuen Zeile (wenn diese offensichtlich aus einer Datei stammt) würde ich übrigens per
>>"%Quelle%" type $einzufügenderTxt.txt
Grüße
bastla