lamerking
Goto Top

Werte aus Textdatei auslesen, ändern und in Batch ausführen

Hallo zusammen,

ich habe folgendes Problem:

Ich benötige eine Batchdatei, die die zweite Netzwerkkarte der einzelnen Server automatisch deaktiviert.

Zum deaktivieren der Netzwerkkarte gibt es das Kommandozeilenutility devcon.

Mit dem Befehl

devcon find =net wird folgendes aufgelistet (Werte sind natürlich abhängig vom Server):

a72344b321d2228aae378594dc7a6b6f-net


Ich kriegs leider selber nicht hin, eine Batchdatei (oder WSH-Skript) zu schreiben, welche von der oben beschriebenen Ausgabe immer die zweite Zeile entnimmt und mit dem Befehl

devcon disable @pci\VEN_1022^&DEV_2000^&SUBSYS_20001022^&REV_10\3^&61AAA01^&0^&88

die zweite Netzwerkkarte deaktiviert.
Zu beachten ist, dass der Befehl nur funktioniert, wenn vor jedem & ein ^ eingefügt ist.

Hat jemand von euch ne Idee?

Vielen Dank schon mal.

Gruß
Tobias

Content-ID: 70246

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

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

bastla
bastla 05.10.2007 um 16:59:31 Uhr
Goto Top
Hallo Lamerking!

Könnte etwa so gehen:
@echo off & setlocal
set a=
for /f "skip=1 delims=:" %%i in ('devcon find =net') do if not defined a set "a=%%i"  
set "a=%a:&=^&%"  
devcon disable @%a%

Grüße
bastla
Lamerking
Lamerking 11.10.2007 um 14:02:06 Uhr
Goto Top
Hallo,

erst mal Danke für deine Mühen.

Ich hab das ganze jetzt endlich mal ausprobiert:

C:\>set a=

C:\>for /F "skip=1 delims=:" %i in ('devcon find net') do if not defined a set
a=%i"

C:\>set "a=&=^&"

C:\>devcon disable @ & &
HTREE\ROOT\0 : Disabled
1 device(s) disabled.
Der Befehl "&" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Er hat wohl Probleme mit der Zeile set "a=&=^&". Hab selbst schon ein bisschen rumprobiert, krieg es aber nicht hin.
Hast du eine Ahnung wo der Fehler liegen könnte?

Danke schon mal im Voraus.

Gruß
Tobias
bastla
bastla 11.10.2007 um 14:47:15 Uhr
Goto Top
Hallo Lamerking!

Das sieht eigentlich so aus, als hätte %a% gar keinen Inhalt bekommen ...

Bau zur Kontrolle einmal nach dem "for" ein
echo "%a%"  
ein.

Grüße
bastla
Lamerking
Lamerking 11.10.2007 um 14:57:26 Uhr
Goto Top
Hi,

er gibt folgendes aus:

echo ""
""
bastla
bastla 11.10.2007 um 15:10:58 Uhr
Goto Top
... was meine Vermutung bestätigt: %a% hat keinen Inhalt - Ansatzpunkt daher die "for"-Schleife, und hier zunächst
devcon find net
Bitte einmal nur diesen Befehl eingeben und überprüfen, dass das Ergebnis auch wirklich aus mehr als einer Zeile besteht.

Grüße
bastla
bastla
bastla 11.10.2007 um 15:20:02 Uhr
Goto Top
... bzw versuche es im Batch (in der "for"-Zeile) mit der folgenden Schreibweise:
devcon find ^=net

Grüße
bastla
Lamerking
Lamerking 11.10.2007 um 15:24:54 Uhr
Goto Top
Hi,

muss sagen: Riesen Mann!
Vielmals Danke!!!!!

Gruß
Tobias
Biber
Biber 11.10.2007 um 21:05:41 Uhr
Goto Top
Moin lamerking und bastla,

auch wenn es eigentlich schon gelöst ist, würde ich hgern nach eine Variante nachreichen, in der ich ein bisschen die Anführungszeichen umgruppiert habe.

Dann bleibt:
::----snipp devconDisable2ndNet.bat
@for /f "delims=: tokens=1-2" %%i in ('devcon find "=net"^|findstr /n .') do @if %%i==2 devcon disable @"%%~i"  
::----snapp devconDisable2ndNet.bat

...aber andererseits: diese Goldene Regel "Never run a changing system" oder "Change a never running system" oder wie die heißt, die kenn ich auch. Also wenn bastlas Variante tut, was sie soll, das ist es gut so.

Grüße
Biber