Domino 9 und frühere Versionen > ND8: Entwicklung

Shell Exitcode auslesen

(1/1)

mli:
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

MarkusL:
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

pram:
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)

--- Ende Code ---
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

mli:
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

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln