Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

ExitCode eines .VBS nicht richtig wenn ich es aus einem Batch aufrufe ...

Frage Entwicklung Batch & Shell

Mitglied: lobiwan

lobiwan (Level 1) - Jetzt verbinden

23.07.2009, aktualisiert 16:08 Uhr, 3663 Aufrufe, 2 Kommentare

Also, ich möchte aus einer Batchdatei ein VB-Script aufrufen der nachschaut ob ein PCI-Device vorhanden ist und wenn dann mit einem Exitcode 0 beendet wird sonst 1.

Das Ergebnis möchte ich dann im einer Batchdatei via "If Errorlevel ..." verwerten.
Nun ist das eigenartige, das erst beim zweiten aufruf des Scripts der richtige Exitcode in der Errorlevel Variable steht !?

Vorgehen:
Ich nehme dazu erstmal eine Kommandozeile und rufe mein Script mit:

cscript meinscript.vbs VendorID DeviceID & Echo %Errorlevel%

auf, aber erst ab dem zweiten mal aufrufen kommt die "richtige" Antwort.
Ist wahrscheinlich nur irgendwo ne kleinigkeit aber ich seh die nicht ;-(


Hier mein bisheriger Code ...
01.
Option Explicit 
02.
Dim exitcode 
03.
exitcode=1 
04.
' Check argument count 
05.
If WScript.Arguments.Count < 2 Then 
06.
	MsgBox "Missing Arguments !" & VbCrLf & VbCrLf & Wscript.ScriptName & " VendorID DeviceID" & VbCrLf & VbCrLf & Wscript.ScriptName & " 8086 2592", 16, "Error" 
07.
	exitcode=2 
08.
	Wscript.Quit(exitcode) 
09.
End If 
10.
' Check argument lenght 
11.
If not Len(Wscript.Arguments(0))=4 Then  
12.
	MsgBox " VendorID must be 4 digits !!! ", 16, "Error"	 
13.
	exitcode=2 
14.
	Wscript.Quit(exitcode) 
15.
End If 
16.
If not Len(Wscript.Arguments(1))=4 Then  
17.
	MsgBox " DeviceID must be 4 digits !!! ", 16, "Error" 
18.
	exitcode=2 
19.
	Wscript.Quit(exitcode) 
20.
End If 
21.
 
22.
Dim buses,bus,device,devices,strVendor2Search,strDevice2Search 
23.
Set buses = GetObject("winmgmts:").InstancesOf("Win32_Bus") 
24.
strVendor2Search = "VEN_" & Wscript.Arguments(0) 
25.
strDevice2Search = "DEV_" & Wscript.Arguments(1) 
26.
For Each bus In buses 
27.
    Set devices = GetObject("winmgmts:").ExecQuery ("Associators of {Win32_Bus.DeviceID=""" & bus.DeviceID & """} WHERE AssocClass = Win32_DeviceBus") 
28.
    For Each device In devices 
29.
		If InStr(UCase(device.PnPDeviceID),strVendor2Search) Then 
30.
			If InStr(UCase(device.PnPDeviceID),strDevice2Search) Then 
31.
				WScript.Echo "  ", device.name 
32.
				WScript.Echo vbTab, device.PnPDeviceID 
33.
				WScript.Echo " " 
34.
				exitcode=0 
35.
			End IF 
36.
		End IF 
37.
    Next 
38.
Next  
39.
Wscript.Quit(exitcode)
Mitglied: Biber
23.07.2009 um 16:14 Uhr
Moin lobiwan,

schreibe in der Batchdatei statt...
01.
cscript meinscript.vbs VendorID DeviceID & Echo %Errorlevel%
... jetzt zweizeilig:
01.
cscript meinscript.vbs VendorID DeviceID  
02.
Echo %Errorlevel%
Wenn Du es in einer Zeile mit "&" verknüpft schreibst, wird der %Errorlevel% ausgegeben, der gesetzt war,
als die CMD.exe sich diese Zeile zum parsen, interpretieren und letzendlich ausführen geladen hat.
Also somit auch, bevor der CScript-Schlenker ausgeführt wurde.

Grüße
Biber
Bitte warten ..
Mitglied: lobiwan
24.07.2009 um 08:08 Uhr
Tja, was soll ich sagen, FUNKTIONIERT !!!!
Manchmal sollte man(n) doch eher fragen.

Danke

Lobiwan
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

Batch & Shell
gelöst Base64 Decode (Batch,VBS) (26)

Frage von clragon zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmtes Arrayfeld mit Variable aufrufen? - VBS (10)

Frage von gabrixl zum Thema VB for Applications ...

VB for Applications
gelöst Tool zur scriptbasierten PDF-Bearbeitung gesucht (VBS oder Batch) (6)

Frage von SarekHL zum Thema VB for Applications ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (59)

Frage von pjrtvly zum Thema Internet ...

DSL, VDSL
VDSL Signal via PowerLine an Fritzbox - Möglich? (19)

Frage von Seichobob zum Thema DSL, VDSL ...

Windows Server
Benutzer sperrt sich immer wieder im Active Directory Contoller (18)

Frage von Kirdy1301 zum Thema Windows Server ...