Toon posts:

[vbscript] vbscript ExitCode

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een executable (Project1.exe) die '2' antwoordt. Deze roep ik aan met een vbscriptje, en op basis van het antwoord dat deze executable geeft, moet het vbscriptje iets doen.
Als hij 2 als antwoord krijgt moet hij iets zeggen,
als hij iets anders dan 2 als antwoord krijgt, moet hij iets anders zeggen.

Maar hij reageert de hele tijd alsof de exitcode iets anders is dan 2, terwijl ik toch echt het antwoord 2 krijg als ik het commando WScript.Echo oExec.ExitCode geef.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec("D:\script\project\Project1.exe")

If oExec.ExitCode = 2 then

WScript.Echo "exitcode is twee"

else WScript.Echo "exitcode is wat anders"

end if

WScript.Echo oExec.ExitCode


WScript.Echo oExec.ExitCode geeft 2
WScript.Echo TypeName(oExec.ExitCode) geeft Long
WScript.Echo VarType(oExec.ExitCode) geeft 3

Weet iemand wat ik verkeerd doe?

[ Voor 12% gewijzigd door Verwijderd op 13-11-2005 15:55 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Waarom vergelijk je een long met een string? Ik ken verder niet echt veel van VBScript, maar moet het niet zo zijn:
Visual Basic:
6
If oExec.ExitCode = 2 then

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
-NMe- schreef op zondag 13 november 2005 @ 15:46:
Waarom vergelijk je een long met een string? Ik ken verder niet echt veel van VBScript, maar moet het niet zo zijn:
Visual Basic:
6
If oExec.ExitCode = 2 then
idd, die aanhalingstekens heb ik om de 2 heengezet bij wijze van test.
Maar zonder de aanhalingstekens bestaat het probleem ook nog.

[edit: ik zal ze in de code hierboven even weghalen]

[ Voor 7% gewijzigd door Verwijderd op 13-11-2005 15:55 ]


Verwijderd

Topicstarter
als ik in de code van de 2 een 0 maak geeft-ie wel als antwoord "exitcode is twee"

maar WScript.Echo oExec.ExitCode geeft toch echt 2

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Die hele Exec werkt bij mij niet. Wat wel werkt is:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
Dim WshShell, exitCode
Set WshShell = CreateObject("WScript.Shell")

exitCode = WshShell.Run("D:\script\project\Project1.exe", 1, True)

If exitCode = 2 then
  WScript.Echo "exitcode is twee"
else 
  WScript.Echo "exitcode is wat anders"
end if

WScript.Echo exitCode


offtopic:
Er is ook nog een edit-knop rechtsboven.

[edit]
Meer uitleg over Run. Het verschil zit hem in de bWaitOnReturn. Normaal wordt er niet gewacht toch het programma klaar is. Met bWaitOnReturn geef je aan dat hij wel moet wachten.

Bij Exec zit er niet zoiets en moet je zelf wachten. Dit wordt voorgedaan bij de specificatie van Exec:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec("calc")

Do While oExec.Status = 0
     WScript.Sleep 100
Loop

WScript.Echo oExec.Status

[ Voor 53% gewijzigd door Daos op 13-11-2005 17:22 ]


Verwijderd

Topicstarter
Hartelijk bedankt Daos!
Pagina: 1