Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: mli am 18.04.13 - 11:30:38

Titel: Shell Exitcode auslesen
Beitrag von: mli am 18.04.13 - 11:30:38
Hallo,

ich möche per NS ein DOS Batch Programm starten, das mir einen Rückgabewert liefert.

NotesScript:
        AppName = D:\TestS.cmd
   ProcId = Shellid (AppName, ShellHide)
   ProcHnd = OpenProcess(SYNCHRONIZE, False, ProcId)
   XShell = WaitForSingleObject(ProcHnd, TimeOut)

z.B. DOS Programm: TestS.cmd mit folgendem Inhalt:
Pause
exit /b 2

Aufruf:
Call D:\TestS.cmd

Abfrage:
echo %errorlevel%

Ergebnis:
2

Welche Möglichkeit habe ich unter Notesscript auch als Ergebnis die "2" zu erhalten?



Viele Grüße
Titel: Re: Shell Exitcode auslesen
Beitrag von: MarkusL am 18.04.13 - 13:49:58
Hallo,

du musst z. B. das Ergebnis in eine txt-Datei schreiben und diese auslesen.

fileNum% = FreeFile()
Open PATH For Input As fileNum% 'PATH = txt-Dateiname mit Pfad
Do Until EOF(1)
   'Hier erfolgt die weitere Verarbeitung, bis das Ende der Datei erreicht ist.
   Line Input #1, text$
      textalt = doc.GetItemValue( FIELD2 )(0)      
      Call doc.ReplaceItemValue(FIELD2, textalt + text$ + Chr(13) & Chr(10))
   Loop
   Close fileNum%
               
   'Löschen der Log-Datei
   Kill PATH

Geht vielleicht schöner und schneller, bei mir klappt es aber so.

Gruß Markus
Titel: Re: Shell Exitcode auslesen
Beitrag von: pram am 18.04.13 - 14:39:43
Ich kann dir sagen, dass der Aufruf von "WaitForSingleObject" unter Domino 64 Bit seit 8.5.3 FP3 zu einem Serverabsturz führt.

Wir verwenden statt dessen jetzt
Code
Set vShell = CreateObject("WScript.Shell")
nRet = vShell.Run(sCommand, 3, True) 
http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.84%29.aspx
.... If set to true, script execution halts until the program finishes, and Run returns any error code returned by the program....

Gruß
Roland
Titel: Re: Shell Exitcode auslesen
Beitrag von: mli am 23.04.13 - 11:58:10
Hallo,

das mit dem "WScript.Shell" hat super funktioniert.
Man darf nur die Anführungszeichen (CHR(34) & "C:\Program Files (x86)\TestS\TestS.cmd" & CHR(34)) nicht vergessen.

Besten Dank für den Tipp.


Gruß

MLI