Forum: PC-Programmierung Zeile in batch-Datei an bestimmmte Stelle einfügen (WinXP -batch)


von Zulu (Gast)


Lesenswert?

Hallo,

ich möchte einen String in eine vorhandene BAT-datei in eine bestimmte 
Zeile einfügen. Ich habe auch eine entsprechende Kode gefunden (siehe 
unten).
Wenn ich die Batchdatei unten ausführe
 - wurde in Zeile 4 der Text korrekt eingefügt, aber
 - fehlt ab der Hälfte der Inhalt in der neuen Batchdatei
 - es fehlen alle leere Zeilen

Ich nehme an, dass die Batch-Datei, mit der ich die original-Batch-Datei 
ändere, versucht den Inhalt der original-Batch-Datei zu interpretieren. 
Solbald in der original-Batchdatei das Zeichen "<" auftaucht erhalte ich 
diese Meldung:

"<" ist syntaktisch an dieser Stelle nicht verarbeitbar.

Wie kann ich sonst automatisch eine Zeile in eine Datei einfügen?

Danke + Gruß
Zulu



###########################################################
@echo off & setlocal
setLocal EnableDelayedExpansion
set "Datei=C:\TMP\DATEI_ZU_AENDERN.BAT"
set EinfZeile=4
set "NeueZeile=Zeileninhalt der neuen Zeile"

set "Bak=%Datei%.bak"
move "%Datei%" "%Bak%"
set Z=1
for /f "usebackq delims=" %%i in ("%Bak%") do set "Zeile=%%i" & call 
:ProcessLine
goto :eof

:ProcessLine
if %Z% neq %EinfZeile% goto :SchreibeZeile
echo %NeueZeile%>>"%Datei%"
:SchreibeZeile
echo %Zeile%>>"%Datei%"
set /a Z+=1
###########################################################

von Hans-jürgen H. (hjherbert) Benutzerseite


Lesenswert?

Echo ohne Argument (Leerzeile) sollte "Echo is On" in die Ausgabe 
schreiben.

Die Unix-Werkzeige "head" und "sed" gibt es auch für Windows

move "%Datei%" "%Bak%"
head -n 4 "%Bak%" >"%Datei%"
echo "Neue eingezügte Zeile" >>"%Datei%"
sed 1,4d "%Bak%" >>"%Datei%"

Diese Unix-für Windows-Utilities kommen z.B. von der Installation WINAVR
Die kopiere ich einfach in das C:\Windows Verzeichnis. -

Es sollte aber auch mit http://www.cygwin.org/cygwin/ gehen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Eine Leerzeile lässt sich mit

  echo.

erzeugen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.