mrvain
Goto Top

Batch Programmieren - Daten auslesen

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

Content-Key: 84916

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

Printed on: May 3, 2024 at 18:05 o'clock

Member: Biber
Biber Apr 07, 2008 at 14:55:24 (UTC)
Goto Top
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]
Member: MrVain
MrVain Apr 07, 2008 at 21:13:26 (UTC)
Goto Top
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?
Member: Biber
Biber Apr 08, 2008 at 07:55:22 (UTC)
Goto Top
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
Member: MrVain
MrVain Apr 08, 2008 at 08:52:00 (UTC)
Goto Top
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...
Member: Biber
Biber Apr 08, 2008 at 09:02:17 (UTC)
Goto Top
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
Member: MrVain
MrVain Apr 08, 2008 at 09:28:30 (UTC)
Goto Top
Vielen Dank !!!

Jetzt funktioniert es face-smile


Gruß
MrVain