Zeile in batch-Datei an bestimmmte Stelle einfügen (WinXP -batch)

Gast #1174941
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
###########################################################
Persönliche Seite #1178451
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren