Palladin007
assimiliert
Guten Tag
Ich habe eine Frage zu dem Befehl for
Und zwar will ich einen Programm-Teil haben, der den Inhalt einer txt-Datei ändern kann.
1. Soll es eine bestimmte Zeile verändern können
2. Soll es eine bestimmte Zeile löschen können.
Das Problem bei der Sache ist dann nur, dass das bei Batch ja nicht so einfach geht.
Wenn ich also mit for eine Zeile finde, und die geändert werden soll, dann muss alles davor und alles danach, nur diese Zeile nicht, in eine neue Datei geschrieben werden. Und diese kleine Zeile, die wird erst geändert und dann geschrieben.
Dazu habe ich folgendes Programm im Internet gefunden:
Der Inhalt der Datei alt.txt
Wenn ich das Programm nun starte und bei tokens die 1 eingebe, funktioniert alles, so, wie es soll. Die komplette Datei wird auf veränderte Weise neu geschrieben. Hans wird Clara
Wenn ich 2 oder 3 eingebe, dann wird der jeweile Token brav geschrieben, ABER die Tokens davor nicht.
Ich brauche ein Programm, was in einer txt JEDE Stelle, die man mit Tokens definieren kann, ändern kann und den gesammten Rest so neu schreibt, wie es war.
Wenn ich also 3 eingebe, dann müsste die Ausgabe so aussehen:
Und nicht anders
Ich bekomme zur Zeit nur das ausgegeben:
Und das darf nicht sein.
Weiß jemand eine Lösung?
Ich habe eine Frage zu dem Befehl for
Und zwar will ich einen Programm-Teil haben, der den Inhalt einer txt-Datei ändern kann.
1. Soll es eine bestimmte Zeile verändern können
2. Soll es eine bestimmte Zeile löschen können.
Das Problem bei der Sache ist dann nur, dass das bei Batch ja nicht so einfach geht.
Wenn ich also mit for eine Zeile finde, und die geändert werden soll, dann muss alles davor und alles danach, nur diese Zeile nicht, in eine neue Datei geschrieben werden. Und diese kleine Zeile, die wird erst geändert und dann geschrieben.
Dazu habe ich folgendes Programm im Internet gefunden:
Code:
@echo off
setLOCAL enabledelayedexpansion
set /p token=Welchen Token?
set "quell_datei=%pfad%\alt.txt"
set "ziel_datei=%pfad%\neu.txt"
set "suchen_nach=hans mustermann"
set "ersetzen_durch=clara mustermann"
if not defined suchen_nach (ECHO Fehler: Die Variable suchen_nach nicht definiert^^!&goto :EOF)
if exist %ziel_datei% (del /f %ziel_datei% 1>nul 2>nul)
for /f "delims=| tokens=%token%" %%i in ('FINDSTR . "%quell_datei%"') do (set rest=%%j&set zeile=%%i& call :ersetzen !zeile!)
goto :weiter
:ersetzen
set zeile=!zeile:%suchen_nach%=%ersetzen_durch%!
IF [!zeile!] equ [] (echo.>>%ziel_datei%) else (echo !zeile!>>%ziel_datei%)
goto :EOF
:weiter
echo Fertig^^!
pause
verborgener Text:
http://www.supportnet.de/fresh/2007/1/id1481757.asp
PS: Das oben ist nicht das Original-Programm. Ich hab versucht, es an meine Bedürfnisse anzupassen.
PS: Das oben ist nicht das Original-Programm. Ich hab versucht, es an meine Bedürfnisse anzupassen.
Der Inhalt der Datei alt.txt
Code:
asdf |sdgsrg| hans mustermann
hans mustermann| dfgs
asdf |asgasd
asdf |adga| hans mustermann
hans mustermann | srths
asdf |asdgsbd | hans mustermann
adsf | asdfga
Wenn ich das Programm nun starte und bei tokens die 1 eingebe, funktioniert alles, so, wie es soll. Die komplette Datei wird auf veränderte Weise neu geschrieben. Hans wird Clara
Wenn ich 2 oder 3 eingebe, dann wird der jeweile Token brav geschrieben, ABER die Tokens davor nicht.
Ich brauche ein Programm, was in einer txt JEDE Stelle, die man mit Tokens definieren kann, ändern kann und den gesammten Rest so neu schreibt, wie es war.
Wenn ich also 3 eingebe, dann müsste die Ausgabe so aussehen:
Code:
asdf |sdgsrg| clara mustermann
hans mustermann| dfgs
asdf |asgasd
asdf |adga| clara mustermann
hans mustermann | srths
asdf |asdgsbd | clara mustermann
adsf | asdfga
Und nicht anders
Ich bekomme zur Zeit nur das ausgegeben:
Code:
clara mustermann
clara mustermann
clara mustermann
Und das darf nicht sein.
Weiß jemand eine Lösung?