mrvain

Batch Programmieren - Daten auslesen

geschlossengelöstFrageBatch, Shell Entwicklung
Hallo

ich möchte eine Batch Datei schreiben, in der ich eine Eingabe mache, z.B. PC01

und nun habe ich eine txt Datei mit folgendem Inhalt:

PC01 aa-aa-aa-aa-aa-aa 192.168.1.1
PC02 bb-bb-bb-bb-bb-bb 192.168.1.2


Ist es möglich, dass ich die Eingabe in der BAT Datei mit dieser txt Datei abgleiche, sodass das Programm zum PC01 geht und zusätzlich die anderen Werte (Mac Adresse + IP Adresse) einer Variable zugeordnet wird.

// Es geht um ein einfaches Wake On Lan Tool ( wake.exe )

mfg
MrVain
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 84916

Url: https://administrator.de/forum/batch-programmieren-daten-auslesen-84916.html

Ausgedruckt am: 07.07.2025 um 01:07 Uhr

Biber
Biber 07.04.2008 um 16:55:24 Uhr
Moin MrVain,

willkommen im Forum.
ich möchte eine Batch Datei schreiben, in der ich eine Eingabe mache, z.B. PC01

Welchen Strategie hast Du denn gewählt, um von Status A ("ich möchte eine Batchdatei schreiben") nach Status B ("ich habe fertig") zu gelangen?

Falls Du Dich mit dem Thema soweit auseinandersetzen willst, dass Du zumindest eine zweite Batchdatei allein hinbekommst, wäre meine Empfehlung:

Wechsele zum CMD-Prompt, gib dort nacheinander ein
Set /?
For /?
...und lese Dir die Erläuterungen zu den Teilbefehlen "Set /P" und "For /F" durch.
Zu beiden findest Du auch (ohne Übertreibung) Hunderte von Beispielschnipseln hier im Bereich Batch & Shell.

Versuche bitte zuerst, eine lauffähige Skizze dieses Batchablaufs zu erstellen und hier zu posten.
Sollte es dann klemmen, unterstützen wir gern.

Grüße
Biber
[Edit um 20.15] Na, jezz' hab ich ihn verschreckt...sorry.
Also kleine Skizze / Test am CMD-Prompt:
>Set /P "pc=Bitte Rechnernamen eingeben: "  
>for /f "tokens=1-3" %i in (Rechnerliste.txt) do @if /i "%pc%"=="%i" echo Set "PC=%i Set" "MAC=%j" Set "IP=%k"  
[/Edit]
MrVain
MrVain 07.04.2008 um 23:13:26 Uhr
Hallo und vielen Dank für deine Antwort.

Ich habe mir das auch alles mal etwas genauer angeguckt.

Aber wenn ich es so mache, wie du schreibst, kommt folgender Fehler:


"pci" echjo SET "PC" ist syntaktisch an dieser Stelle nicht verarbeitbar


Woran kann das liegen?
Biber
Biber 08.04.2008 um 09:55:22 Uhr
Moin MrVain,

vom CMD-Prompt aus solte es wie gepostet funktionieren, wenn die Datei "Rechnerliste.txt" so aussieht wie von Dir oben skizziert.

Nochmal zum Testen und nachturnen am CM-Prompt:
echo PC01 aa-aa-aa-aa-aa-aa 192.168.1.1>Rechnerliste.txt

>echo PC02 bb-bb-bb-bb-bb-bb 192.168.1.2>>Rechnerliste.txt
>set PC=PC02
>for /f "tokens=1-3" %i in (Rechnerliste.txt) do @if /i "%pc%"=="%i" echo Set "PC=%i" Set "MAC=%j" Set "IP=%k"  
Set "PC=PC02" Set "MAC=bb-bb-bb-bb-bb-bb" Set "IP=192.168.1.2"  

In einem Batch müssten alle %-Zeichen verdoppelt werden, also ungefähr so:
....
for /f "tokens=1-3" %%i in (Rechnerliste.txt) do if /i "%%pc%"=="%%i" (  
                       echo Set "PC=%%i"   
                       echo Set "MAC=%%j"   
                       echo Set "IP=%%k"  
)
Wenn auch dieser Vorab-Test das Gewünschte zeigt, dann die echo's entfernen.

Grüße
Biber
MrVain
MrVain 08.04.2008 um 10:52:00 Uhr
Hallo und vielen Dank für deine Antwort.

Die Liste sieht folgendermaßen aus:

PC01 aa-aa-aa 91.0.0.1
PC02 bb-bb-bb 91.0.0.2
PC03 cc-cc-cc 91.0.0.3

und die test.bat Datei so:

@echo off

Set /P "pc=Bitte Rechnernamen eingeben: "
for /f "tokens=1-3" %%i in (Rechnerliste.txt) do if /i "%%pc%"=="%%i" (
echo Set "PC=%%i"
echo Set "MAC=%%j"
echo Set "IP=%%k"
)

echo %PC% und %MAC% und %IP%

pause


Es kommt wieder folgende Ausgabe:

"(" ist syntaktisch an dieser Stelle nicht verarbeitbar - auch wenn ich die echo lösche...
Biber
Biber 08.04.2008 um 11:02:17 Uhr
Moin MrVain,

ich habe es zu gut gemeint mit dem %-Zeichen verdoppeln:
Streiche: "%%pc%"=="%%i"
Setze: "%pc%"=="%%i"

Variablen werden auch im Batch (wie am CMD-Prompt) nur durch einfache %-Zeichen eingeschlossen.

Probierst Du noch mal bitte?

Grüße
Biber
MrVain
MrVain 08.04.2008 um 11:28:30 Uhr
Vielen Dank !!!

Jetzt funktioniert es face-smile


Gruß
MrVain