verwirrter76
Goto Top

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

 #		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

Content-Key: 108311

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

Printed on: April 26, 2024 at 06:04 o'clock

Member: bastla
bastla Feb 06, 2009 at 21:29:47 (UTC)
Goto Top
Hallo Verwirrter76!

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  
    )
)
Grüße
bastla
Member: Verwirrter76
Verwirrter76 Feb 06, 2009 at 21:34:06 (UTC)
Goto Top
Ich danke dir!
Hat sofort geklappt.

Ein super Forum ist das hier! Macht weiter so!