Per Batch Zeile mit bestimmtem Wort löschen und nach einer bestimmten Zeile etwas einfügen.
Hallo,
ich habe eine Frage. Ich habe eine ini Datei. Jetzt will ich das meine Batch Datei,
wenn ich sie starte, in der Datei nach "ignore=" sucht und die ganze Zeile löscht.
Dann will ich das die Batchdatei nach einer Zeile sucht die mit "n1=" beginnt und !unter! dieser etwas einfügt.
MfG
Bastian
ich habe eine Frage. Ich habe eine ini Datei. Jetzt will ich das meine Batch Datei,
wenn ich sie starte, in der Datei nach "ignore=" sucht und die ganze Zeile löscht.
Dann will ich das die Batchdatei nach einer Zeile sucht die mit "n1=" beginnt und !unter! dieser etwas einfügt.
MfG
Bastian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 76831
Url: https://administrator.de/contentid/76831
Ausgedruckt am: 25.11.2024 um 08:11 Uhr
1 Kommentar
Hallo Kulimeya und willkommen im Forum!
Das könnte etwa so gehen:
Kurz zum Ablauf:
Nach den beiden Begriffen "ignore=" und "n1=" wird jeweils am Anfang einer Zeile gesucht, wobei Groß-/Kleinschreibung ignoriert wird.
Zunächst werden alle Zeilen, welche nicht mit "ignore=" beginnen, in eine Temp-Datei geschrieben (entspricht dem Löschen der "ignore="-Zeilen).
Dann wird die ini-Datei neu erstellt, indem zunächst die Original(=Quell)datei gelöscht und dann eine neue ini-Datei mit allen Zeilen der Temp-Datei bis inkl der ersten Zeile, welche mit "n1=" beginnt, gefüllt wird.
Danach wird eine Zeile mit dem Text "etwas" (war doch so gewünscht, oder? ) in die neue ini-Datei geschrieben und schließlich die restlichen Zeilen aus der Temp-Datei hinzugefügt. Natürlich lassen sich bei Bedarf (durch weitere "echo"-Zeilen) auch mehrere neue Zeilen einfügen.
Wenn die Markierung "n1=" nicht gefunden werden kann, wird die gesamte Temp-Datei (daher ohne die "ignore="-Zeile(n), aber natürlich auch ohne die neue "etwas"-Zeile) wieder als ini-Datei gespeichert.
Grüße
bastla
Das könnte etwa so gehen:
@echo off & setlocal
set "Quelle=D:\Datei.ini"
set "Entf=ignore="
set "Mark=n1="
set "TempTxt=%temp%\TT.txt"
findstr /v /b /i "%Entf%" "%Quelle%">"%TempTxt%"
set Zeile=0
for /f "delims=:" %%i in ('findstr /n /i /b "%Mark%" "%TempTxt%"') do set Zeile=%%i
del "%Quelle%"
if %Zeile%==0 goto :Rest
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%TempTxt%"') do if %%i leq %Zeile% echo.%%j>>"%Quelle%"
echo etwas>>"%Quelle%"
:Rest
more +%Zeile% "%TempTxt%">>"%Quelle%"
Nach den beiden Begriffen "ignore=" und "n1=" wird jeweils am Anfang einer Zeile gesucht, wobei Groß-/Kleinschreibung ignoriert wird.
Zunächst werden alle Zeilen, welche nicht mit "ignore=" beginnen, in eine Temp-Datei geschrieben (entspricht dem Löschen der "ignore="-Zeilen).
Dann wird die ini-Datei neu erstellt, indem zunächst die Original(=Quell)datei gelöscht und dann eine neue ini-Datei mit allen Zeilen der Temp-Datei bis inkl der ersten Zeile, welche mit "n1=" beginnt, gefüllt wird.
Danach wird eine Zeile mit dem Text "etwas" (war doch so gewünscht, oder? ) in die neue ini-Datei geschrieben und schließlich die restlichen Zeilen aus der Temp-Datei hinzugefügt. Natürlich lassen sich bei Bedarf (durch weitere "echo"-Zeilen) auch mehrere neue Zeilen einfügen.
Wenn die Markierung "n1=" nicht gefunden werden kann, wird die gesamte Temp-Datei (daher ohne die "ignore="-Zeile(n), aber natürlich auch ohne die neue "etwas"-Zeile) wieder als ini-Datei gespeichert.
Grüße
bastla