Wie kann ich eine Textdatei mit eine Batch Datei bearbeiten?


18.02.2021, 14:52

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:

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

SonOfEpic 
Beitragsersteller
 18.02.2021, 08:17

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 :)

0