bjoern909
Goto Top

Über eine Batch datei etwas in die 4. Zeile einer Textdatei schreiben

Hallo Batch spezialisten,

Ich bin gerade dabei eine Batch datei zu schreiben doch ich hänge an einem Problem. Wie gebe ich eine Batch datei den Befehl etwas in die 4. Zeile einer Textdatei zu schreiben?

WÜrde mich über eine schnelle Antwort freuen und sage schon mal im Vorraus danke.

Content-Key: 79699

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

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

Member: miniversum
miniversum Feb 01, 2008 at 10:02:40 (UTC)
Goto Top
Soll den die 4. Zeile die schon in der Textdatei drinsteht dan überschreiben werden oder soll eine Zeile nach der 3. Zeile eingefügt werden?
Member: Bjoern909
Bjoern909 Feb 01, 2008 at 10:15:47 (UTC)
Goto Top
Es soll eine Neue Zeile nach der 4. Zeile eingefügt werde und dort soll dann der Text rein.
Member: Bjoern909
Bjoern909 Feb 01, 2008 at 10:29:08 (UTC)
Goto Top
und noch eine Frage: Wie kann ich eine Bestimmte zeile, also ein Wort oder auch einen Satz einer Text datei, als Variable in einer anderen batch datei einsetzen?

MfG Bjoern
Member: bastla
bastla Feb 01, 2008 at 14:14:03 (UTC)
Goto Top
Hallo Bjoern909 und willkommen im Forum!

Mit dem folgenden Batch wird die angegebene Zeile als neue Zeile 4 eingefügt - solltest Du nach der Zeile 4 einfügen wollen (Deine diesbezüglichen Aussagen sind nicht eindeutig), musst Du nur die Zeile "set Z=1" durch "set Z=0" ersetzen:
@echo off & setlocal
set "Datei=D:\DeineDatei.txt"  
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
Die ursprüngliche Textdatei bleibt als Sicherungskopie (mit dem Zusatz ".bak") erhalten - falls Du das nicht willst, füge die Zeile
del "%Bak%"  
vor der Zeile "goto :eof" ein.
Zu Deiner anderen Frage: Wodurch wird die "bestimmte Zeile" bestimmt, und wie ist dann das gesuchte Wort zu erkennen?

Grüße
bastla
Member: Bjoern909
Bjoern909 Feb 01, 2008 at 15:06:42 (UTC)
Goto Top
ich habe eine 1. Batch datei die eine Batchdatei 2 aufruft. in dieser 2. batch datei ist dann in der 1. Zeile ein Name. Dieser ist jedoch unbekannt. Diesen möchte ich dann in Batch 1. als variable %nb% haben. Ist das mögglich?

nochmals danke für die schnelle Antwort auf Frage 1.
Member: Bjoern909
Bjoern909 Feb 01, 2008 at 15:15:40 (UTC)
Goto Top
funktioniert der Code für Frage 1 auch für Batch dateien? Irgendwie erstellt der dann eine bak datei. Was ist das und was soll das bringen?
Member: bastla
bastla Feb 01, 2008 at 15:15:54 (UTC)
Goto Top
Hallo Bjoern909!

in dieser 2. batch datei ist dann in der 1. Zeile ein Name.
Du kannst die gesamte erste Zeile so einlesen:
set /p ErsteZeile=<Batch2.bat
Mehr kann ich Dir, ohne dass Du diese Zeile bzw das Kriterium zum Auffinden des Namens näher beschreibst, nicht anbieten ...

Grüße
bastla
Member: bastla
bastla Feb 01, 2008 at 15:21:14 (UTC)
Goto Top
funktioniert der Code für Frage 1 auch für Batch dateien?
Grundsätzlich für alle Textdateien, daher: ja.
Irgendwie erstellt der dann eine bak datei. Was ist das ...
... eine Sicherungskopie (Textdatei vor dem Einfügen der Zeile)
... und was soll das bringen?
Sicherheit face-wink

Ansonsten magst Du ja vielleicht oben nochmals nachlesen, wie Du diese Kopie einfach wieder los wirst ...

Grüße
bastla
Member: Bjoern909
Bjoern909 Feb 01, 2008 at 15:25:46 (UTC)
Goto Top
okay trotzdem danke für die Hilfe

MfG Bjoern
Member: Bjoern909
Bjoern909 Feb 02, 2008 at 13:40:28 (UTC)
Goto Top
Ach und beinahe hätt ich es vergessen:
Was muss ich machen wenn ich in die 4. Zeile etwas reinschreiben will und dort schon ein Befehl steht, den ich jedoch entfernen möchte?

Also so:

@echo off
echo hallo
echo ich bins
Echo wie gehts?
pause >NUL

nach dem ausführen der Batch datei steht da dann:

@echo off
echo Hallo
echo ich bins
Echo Testsatz
pause >NUL

Also das war jetzt nur so als Besipiel genommen. natürlich stehen da ganz andere sachen.
Geht das irgendwie?
Member: bastla
bastla Feb 02, 2008 at 15:58:51 (UTC)
Goto Top
Hallo Bjoern909!

Um die Zeile 4 zu ersetzen:
@echo off & setlocal
set "Datei=D:\DeineDatei.txt"  
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% (echo %Zeile%>>"%Datei%") else echo %NeueZeile%>>"%Datei%"  
set /a Z+=1
Nochmals zu
in dieser 2. batch datei ist dann in der 1. Zeile ein Name.
Falls Du mich missverstanden haben solltest: Es ist nicht so, dass ich Dir nicht helfen wollte, sondern dass ich es ohne zusätzliche Informationen über diese Zeile nicht kann.

Grüße
bastla