Zeile in einer Textdatei finden und ersetzen
Hallo,
habe mich bereits schon durch andere Beispiele durchgesucht, bekomme aber meine Datei nicht zum Laufen;
ich hoffe Ihr könnt mir schnell helfen:
Ich möchte in einer Textdatei test.txt eine Zeile, die mit den 4 Zeichen "OBJP" beginnt durch einen anderen Text ersetzen,
hier meine Versuche:
@echo off
for /f "delims=" %%i in (test.txt) do call :block "%%i"
goto :eof
:block
set "a=%CD%"
set "zzz=%~1"
set "z=%zzz:~0,4%"
if %z% EQU "OBJP" echo "OBJP "%a% >> xxx.txt
if %z% NEQ "OBJP" echo %zzz% >> xxx.txt
Leider wird die Zeile nicht ersetzt !?
Vielen Dank schon im Voraus.
habe mich bereits schon durch andere Beispiele durchgesucht, bekomme aber meine Datei nicht zum Laufen;
ich hoffe Ihr könnt mir schnell helfen:
Ich möchte in einer Textdatei test.txt eine Zeile, die mit den 4 Zeichen "OBJP" beginnt durch einen anderen Text ersetzen,
hier meine Versuche:
@echo off
for /f "delims=" %%i in (test.txt) do call :block "%%i"
goto :eof
:block
set "a=%CD%"
set "zzz=%~1"
set "z=%zzz:~0,4%"
if %z% EQU "OBJP" echo "OBJP "%a% >> xxx.txt
if %z% NEQ "OBJP" echo %zzz% >> xxx.txt
Leider wird die Zeile nicht ersetzt !?
Vielen Dank schon im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95583
Url: https://administrator.de/forum/zeile-in-einer-textdatei-finden-und-ersetzen-95583.html
Ausgedruckt am: 27.04.2025 um 17:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo karniggel!
Vielleicht geht's so besser:
Grüße
bastla
[Edit] @Biber: Schön, dass Du wieder da bist
- aber, von wegen Rechtsüberholer - Abkürzungsbenutzer!
[/Edit]
Vielleicht geht's so besser:
@echo off & setlocal
for /f "delims=" %%i in (test.txt) do call :block "%%i"
goto :eof
:block
set "a=%CD%"
set "zzz=%~1"
set "z=%zzz:~0,4%"
if "%z%" EQU "OBJP" echo OBJP %a% >> xxx.txt
if "%z%" NEQ "OBJP" echo %zzz% >> xxx.txt
bastla
[Edit] @Biber: Schön, dass Du wieder da bist
Moin karniggel,
willkommen im Forum.
Drei Grundregeln solltest Du beim Bätchen beachten:
Okay, die Verletzung der ersten und dritten Grundregel hatte im konkreten Fall keine nachhaltigen Auswirkungen, aber der Regel-2-Verstoss hat Dich reingerissen.
-->Selbst wenn in %z% die 4 Zeichen OBJP stehen würden, wäre der Vergleich
...niemals erfolgreich.
Immer beiderseits eines == oder EQU oder NEQ....-Vergleichs die Werte in die gleichen Begrenzer setzen.
Das müssen keine Anführungszeichen sein, es ginge auch ein
Grüße
Biber
[Edit] Biber grüßt alle altbekannten und geschätzten Rechtsüberholer! *g [/Edit]
willkommen im Forum.
Drei Grundregeln solltest Du beim Bätchen beachten:
- immer mit "@echo off & setlocal" beginnen, wenn Du selbst Variablen per SET definierst
- beim Vergleichen immer Äpfel mit Äpfeln und Birnen mit Birnen vergleichen, niemals mischen
- niemals, wirklich niemals im Bereich "Batch & Shell" schreiben: "Vielen Dank schon im Voraus"
Okay, die Verletzung der ersten und dritten Grundregel hatte im konkreten Fall keine nachhaltigen Auswirkungen, aber der Regel-2-Verstoss hat Dich reingerissen.
if %z% EQU "OBJP" echo ...
if OBJP EQU "OBJP" ...
Immer beiderseits eines == oder EQU oder NEQ....-Vergleichs die Werte in die gleichen Begrenzer setzen.
Das müssen keine Anführungszeichen sein, es ginge auch ein
if [%z%] EQU [OBJP} ....
Grüße
Biber
[Edit] Biber grüßt alle altbekannten und geschätzten Rechtsüberholer! *g [/Edit]
Hallo karniggel!
ZB so:
Achte dabei darauf, dass sich nicht am Ende der Zeile noch ein Leerzeichen befindet ...
Alternativ zu der gezeigten Schreibweise könnte es auch genügen, das Leerzeichen zwischen der Variable und den Umleitungszeichen (also hier: %a% >>) zu entfernen.
Grüße
bastla
ZB so:
if "%z%" EQU "OBJP" >>xxx.txt echo OBJP %a%
if "%z%" NEQ "OBJP" >>xxx.txt echo %zzz%
Alternativ zu der gezeigten Schreibweise könnte es auch genügen, das Leerzeichen zwischen der Variable und den Umleitungszeichen (also hier: %a% >>) zu entfernen.
Grüße
bastla