Toon posts:

[vbscript] function maken en resultaat in variabele

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een vbscriptje maken dat een executable aanroept. Die executable heet check.exe.
Als check.exe 0 antwoordt, dan moet het scriptje een batchfile aftrappen, als-ie 1 antwoordt, dan moet ie een kwartiertje wachten en het opnieuw proberen.
moet ik nou eerst een functie maken die check.exe zijn werk laat doen en met de output daarvan de rest van het script vervolgen?

ik heb dit geschreven:

code:
1
2
3
4
5
6
7
8
9
10
11
12
function check (a, b)
x=true
y=false
set wshshell = CreateObject("WScript.Shell")
wshshell.Run ("C:\check.exe", 1, true)
end function

answer = "het result van check.exe"

if answer= 1 start dezebatchfile.bat

else quit


en het resultaat van de functie moet ik dus weer in de variabele answer zien te krijgen.

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

En hoe antwoord check.exe precies? Via stdout, via return(), of .. ?

Verwijderd

Topicstarter
Radiant schreef op dinsdag 01 november 2005 @ 22:20:
En hoe antwoord check.exe precies? Via stdout, via return(), of .. ?
een collega van mij maakt check.exe en die krijg ik morgen van hem. Ik heb geen idee maar kan het morgen hier melden.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-04 22:57

Janoz

Moderator Devschuur®

!litemod

Dat lijkt mij nogal behoorlijk relevant voor de oplossing. Er zit nogal een verschil tussen errorlevel uitlezen of de output van het programmatje verwerken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Daar had je dan beter eerst even op kunnen wachten of een methode kunnen afspreken met hem. Op deze manier kan niemand er echt iets nuttigs over zeggen :)

Verwijderd

Topicstarter
Radiant schreef op dinsdag 01 november 2005 @ 22:26:
Daar had je dan beter eerst even op kunnen wachten of een methode kunnen afspreken met hem. Op deze manier kan niemand er echt iets nuttigs over zeggen :)
ok ik zal het zo aan hem vragen :)

update
nog geen reactie op mijn email, het zal wel morgen worden

update2
net gesproken:
daar moet hij nog over nadenken . . .

[ Voor 21% gewijzigd door Verwijderd op 03-11-2005 16:41 ]


Verwijderd

Topicstarter
het wordt oExec

Verwijderd

Topicstarter
intussen heb ik dit ervan gemaakt;

(is nog niet af dus)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec    = WshShell.Exec("D:\script\project\check.exe")

Function Functie1(oExec)

     If Not oExec.StdOut.AtEndOfStream Then
          Functie1 = oExec.StdOut.ReadAll
          Exit Function
     End If

    Functie1 = -1
 
    
End Function

Dim tryCount

tryCount = 0

Do While True

     Dim input
     input = Functie1(oExec)

     If -1 = input Then
          If tryCount > 10 And oExec.Status = 1 Then
               Exit Do
          End If
          tryCount = tryCount + 1
          WScript.Sleep 100
 
     End If
Loop

If oExec.ExitCode = 2 Then
     WScript.Echo "Warning: Non-zero exit code"

else WScript.Echo "wa anders doen"

End If

[ Voor 132% gewijzigd door Verwijderd op 12-11-2005 22:40 ]

Pagina: 1