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-Key: 70246

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

Printed on: April 19, 2024 at 12:04 o'clock

Member: bastla
bastla Oct 05, 2007 at 14:59:31 (UTC)
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
Member: Lamerking
Lamerking Oct 11, 2007 at 12:02:06 (UTC)
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
Member: bastla
bastla Oct 11, 2007 at 12:47:15 (UTC)
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
Member: Lamerking
Lamerking Oct 11, 2007 at 12:57:26 (UTC)
Goto Top
Hi,

er gibt folgendes aus:

echo ""
""
Member: bastla
bastla Oct 11, 2007 at 13:10:58 (UTC)
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
Member: bastla
bastla Oct 11, 2007 at 13:20:02 (UTC)
Goto Top
... bzw versuche es im Batch (in der "for"-Zeile) mit der folgenden Schreibweise:
devcon find ^=net

Grüße
bastla
Member: Lamerking
Lamerking Oct 11, 2007 at 13:24:54 (UTC)
Goto Top
Hi,

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

Gruß
Tobias
Member: Biber
Biber Oct 11, 2007 at 19:05:41 (UTC)
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