kulimeya
Goto Top

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

Content-Key: 76831

Url: https://administrator.de/contentid/76831

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: bastla
bastla 29.12.2007 um 21:23:32 Uhr
Goto Top
Hallo Kulimeya und willkommen im Forum!

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%"  
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? face-wink) 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