Per Batch eine einzelne Zeile eines Textdokuments bearbeiten
Guten Abend,
mein anliegen ist folgendes:
Ich habe hier eine Makefile.
Ich möchte gerne die Zeile 3
in
umwandeln.
Dazu habe ich auch sehr lange und habe folgendes gefunden:
Soweit klappt es auch wunderbar.
Nur habe ich dann das Problem, dass alle leeren Zeilen entfernt werden. Also das es keine Abschnitte mehr gibt.
Ich vermute es liegt daran, dass die Batch die Makefile durchsucht und diese leeren Zeilen entfernt.
Dazu habe ich es auch schon mit SED probiert. Damit habe ich es aber auch nicht geschafft. Mit Windows Boardmitteln fände ich es auch besser.
Nun:
Gibt es einen Weg die Batch so zu gestalten, dass sie nur die 3 Zeile editiert?
Falls es hilft:
Nach langen googlen hatte ich eine Batch gefunden, die eine Zeile löscht. Ich habe schon versucht sie so anzupassen, dass sie die Zeile nicht löscht, sondern editiert, jedoch hat dies nicht funktioniert.
Hier der Code:
Ich hoffe ich habe mich verständlich ausgedrückt. Hoffentlich könnt ihr mir bei meinen Problem weiterhelfen.
Es tut mir Leid, wenn ich euch mit meiner Frage nerve, aber so langsam bin ich hier am verzweifeln.
MFG
mein anliegen ist folgendes:
Ich habe hier eine Makefile.
Ich möchte gerne die Zeile 3
# DEBUG=y - Debug build
in
# DEBUG=n - Debug build
umwandeln.
Dazu habe ich auch sehr lange und habe folgendes gefunden:
::==========================
@echo off > newfile
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in (Makefile) do (
if "%%a"=="# DEBUG=y - Debug build" (
echo # DEBUG=n - Debug build >> newfile
) else (
echo %%a >> newfile
)
)
Soweit klappt es auch wunderbar.
Nur habe ich dann das Problem, dass alle leeren Zeilen entfernt werden. Also das es keine Abschnitte mehr gibt.
Ich vermute es liegt daran, dass die Batch die Makefile durchsucht und diese leeren Zeilen entfernt.
Dazu habe ich es auch schon mit SED probiert. Damit habe ich es aber auch nicht geschafft. Mit Windows Boardmitteln fände ich es auch besser.
Nun:
Gibt es einen Weg die Batch so zu gestalten, dass sie nur die 3 Zeile editiert?
Falls es hilft:
Nach langen googlen hatte ich eine Batch gefunden, die eine Zeile löscht. Ich habe schon versucht sie so anzupassen, dass sie die Zeile nicht löscht, sondern editiert, jedoch hat dies nicht funktioniert.
Hier der Code:
@echo off & setlocal
set "InFile=Makefile"
set "OutFile=Makefile_new"
set LineToDelete=7
if exist "%OutFile%" del "%OutFile%"
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%InFile%"^|findstr /b "%LineToDelete%:"') do findstr /v /b /c:"%%j" "%InFile%">>"%OutFile%"
Ich hoffe ich habe mich verständlich ausgedrückt. Hoffentlich könnt ihr mir bei meinen Problem weiterhelfen.
Es tut mir Leid, wenn ich euch mit meiner Frage nerve, aber so langsam bin ich hier am verzweifeln.
MFG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 108311
Url: https://administrator.de/forum/per-batch-eine-einzelne-zeile-eines-textdokuments-bearbeiten-108311.html
Ausgedruckt am: 30.04.2025 um 04:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo Verwirrter76!
Versuch es so:
Grüße
bastla
Versuch es so:
@echo off & setlocal
set "Old=Makefile"
set "New=newfile"
if exist "%New%" del "%New%"
for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%Old%"') do (
if "%%b"=="# DEBUG=y - Debug build" (
>>"%New%" echo # DEBUG=n - Debug build
) else (
>>"%New%" echo\%%b
)
)
bastla