Wie kann ich eine Textdatei mit eine Batch Datei bearbeiten?
Ich komm einfach nicht weiter. Ich habe eine variable die beim Start der Batch Datei eingegeben werden muss. Nun will ich das diese variable (%MacAdresse%) mit bestimmten textstellen in einer TXT Datei ersetzt wird. Weiß jemand weiter?
Danke schonmal
jetzt habe ich ein neues Problem. Die MacAdresse wird ersetzt. Aber nun werden immer die ! aus der Textdatei raus gelöscht habt ihr da eine Idee wieso die immer raus gelöscht werden?
2 Antworten
Da du nichts weiter zu dem Inhalt der Textdatei geschrieben hast, lässt sich keine gezielte Antwort geben.
demo.txt
Bla und blub
Rumpel macht Bumbel
Ratz frissst Fatz
Batch kann einen Text nur Zeilenweise verarbeiten:
demo.cmd
@echo off
rem Textdatei verabeiten (usebackq: Der Dateiname wird in "Gänsefüßchen" übergeben)
rem Tokens sind Teile einer Zeile, wenn kein Tennzeichen (Delimiter) angegebn wird sind Leerzechen Delimiter
rem "tokens=*" bedeutet die ganze Zeile in die %%Laufvariable einlesen
for /f "usebackq tokens=*" %%a in ("demo.txt") do (
rem hier werden die Zeilen verarbeitet
echo verabeite Zeile:
rem Inhalt der Laufvariable %%a anzeigen
echo %%a
)
pause
demo2.cmd
@echo off
rem Nun Lesen wir die Token 1 und den Rest jeder Zeile in die Laufvariablen %%a und %%b
for /f "usebackq tokens=1*" %%a in ("demo.txt") do (
echo Token 1:%%a
echo Rest: %%b
)
pause
Da sich Dein Variable %MacAdresse% nennt, vermute ich mal, das Du die Ausgabe eines Befehls in ein Datei geleitet hast und nun diese Datei auslesen willst.
Ja das geht, aber ist ein Umweg. for /f kann die Ausgabe eines Befehls auch direkt verarbeiten:
@echo off
echo ausgabe des Berfehls getmac (wir brauchen nur die 4. Zeile):
getmac
echo Ende direkte Ausgabe----------------------------------
echo:
rem Befehl im Schleifenkopf ausführen (für dieMacadresse brauchen wir nur das 1.Token der 4.Zeile)
rem also 2 Zeilen überspringen (skip=3) 1. Token
for /f "skip=3 tokens=1" %%a in ('getmac') do (
rem Wert an Variable übergeben
set "MacAdresse=%%a"
)
echo Deine MacAdresse ist :%MacAdresse%
pause
Natürlich kann man auch sehr selektiv aus einer umfangreicheren Ausgabe bestimmte Zeilen auswählen und sogar automatisch VariablenNamen generieren:
@echo off
ipconfig /all
echo Ende direkte Ausgabe----------------------------------
echo:
for /f "tokens=1* delims=.: " %%a in ('ipconfig /all^|findstr "Hostname IPv4-Adresse" ') do (
set "__%%a=%%b"
)
echo diese Variablen wurden automatisch erzeugt:
set __
echo:
echo Dein Hostname: %__Hostname%
echo Deine Netzwerkadresse: %__IPv4-Adresse%
pause
Glossar:
die Patch Datei soll eine Text Datei bearbeiten. In dieser Datei sind Mac Adressen hinterlegt die alle geändert werden müssen. Um Zeit zu sparen und die Arbeit zu erleichtern dachte ich mir das ich eine Batch schreibe.
Danke auch für die Antworten :)
hier solltest du fündig werden
https://administrator.de/forum/batch-wort-textdatei-anderes-ersetzen-80883.html