Beliebigen Text zwischen bestimmten ausdrücken per Batch oder Skript aus ini löschen
Hi,
ich möchte aus einer ini-Datei einen beliebigen Text zwischen zwei bestimmten ausdrücken, bzw. bis zu einen bestimmten Zeichen löschen. Das ganze soll per Skript oder Batch passieren.
Die ini baut sich wie folgt auf:
...
[Terminplaner]
beliebiger zu löschender Text
[PTimer]
...
Es soll also alles nach dem Ausdruck [Terminplaner] bis zur nächsten eckigen Klammer gelöscht werden,
da nicht auf jedem Rechner der Ausdruck [PTimer] nach [Terminkalender] folgt.
Ich hoffe es kann mir jemand helfen.
Viele Dank!
ich möchte aus einer ini-Datei einen beliebigen Text zwischen zwei bestimmten ausdrücken, bzw. bis zu einen bestimmten Zeichen löschen. Das ganze soll per Skript oder Batch passieren.
Die ini baut sich wie folgt auf:
...
[Terminplaner]
beliebiger zu löschender Text
[PTimer]
...
Es soll also alles nach dem Ausdruck [Terminplaner] bis zur nächsten eckigen Klammer gelöscht werden,
da nicht auf jedem Rechner der Ausdruck [PTimer] nach [Terminkalender] folgt.
Ich hoffe es kann mir jemand helfen.
Viele Dank!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 197737
Url: https://administrator.de/contentid/197737
Ausgedruckt am: 24.11.2024 um 23:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo Blackhawk386,
das könnte so gehen:
Gruß
Friemler
das könnte so gehen:
@echo off & setlocal
set "InFile=.\test.ini"
set "OutFile=.\test_new.ini"
set "BlockBegin=[Terminplaner]"
set "DontWrite="
set "Write="
(for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%InFile%"') do (
if not defined DontWrite (
echo.%%b
if "%%b" equ "%BlockBegin%" set /a DontWrite+=1
) else (
echo.%%b|findstr "^\[.*" > NUL && set /a Write+=1
if defined Write echo.%%b
)
)) > "%OutFile%"
Gruß
Friemler
Moin Blackhawk386,
ich vermute, Deine Ini-Datei enthält
Gruß
Friemler
ich vermute, Deine Ini-Datei enthält
&
-Zeichen. Teste mal die folgende, abgeänderte Version des Scripts:@echo off & setlocal
set "InFile=.\test.ini"
set "OutFile=.\test_new.ini"
set "BlockBegin=[Terminplaner]"
set "DontWrite="
set "Write="
(for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%InFile%"') do (
if not defined DontWrite (
echo.%%b
if "%%b" equ "%BlockBegin%" set /a DontWrite+=1
) else (
<NUL set /p "=%%b"|findstr "^\[.*" > NUL && set /a Write+=1
if defined Write echo.%%b
)
)) > "%OutFile%"
Gruß
Friemler
Tachchen,
ich habe ein ähnliches Problem, wie in diesem Thread:
Eventuell kann mir jemand hierrauf aubauend weiterhelfen.
Und zwar will ich auch einen Text zwischen zwei Zeichen/Zeichenfolgen löschen.
Aber im Gegensatz zu dem oben beschriebenen Fall will ich das nicht in einer .txt Datei, sondern in einer Variable.
Desweiteren ist die Zeichenfolge jedesmal mit 1-2 Zeichen anders (die aber immer an der selben stelle stehen).
Also muss man wahrscheinlich mit Wildcards arbeiten, z.b. Fragezeichen.
Lässt sich das mit Batch überhaupt machen, oder muss man das mit Powershell machen? Wie würde das in Batch / Powershell aussehen?
Zum Beipiel:
Protokoll.T01.beliebigerzulöschenderText-Autor
Protokoll.T02.beliebigerzulöschenderText-Autor
etc ...
Ich hoffe da kann mir jemand weiterhelfen.
Gruß
ich habe ein ähnliches Problem, wie in diesem Thread:
Eventuell kann mir jemand hierrauf aubauend weiterhelfen.
Und zwar will ich auch einen Text zwischen zwei Zeichen/Zeichenfolgen löschen.
Aber im Gegensatz zu dem oben beschriebenen Fall will ich das nicht in einer .txt Datei, sondern in einer Variable.
Desweiteren ist die Zeichenfolge jedesmal mit 1-2 Zeichen anders (die aber immer an der selben stelle stehen).
Also muss man wahrscheinlich mit Wildcards arbeiten, z.b. Fragezeichen.
Lässt sich das mit Batch überhaupt machen, oder muss man das mit Powershell machen? Wie würde das in Batch / Powershell aussehen?
Zum Beipiel:
Protokoll.T01.beliebigerzulöschenderText-Autor
Protokoll.T02.beliebigerzulöschenderText-Autor
etc ...
Ich hoffe da kann mir jemand weiterhelfen.
Gruß