Mijn probleem is als volgt. Ik heb een exe die ik moet uitvoeren in een dos commandbox met een variabele. Het resultaat van deze commandline moet worden teruggekregen om te kijken of het commando succesvol is afgerond. Dit moet ik meer dan 600 keer herhalen met verschillende variabelen.
Ik heb tot nu toe de volgende sub hiervoor;
Deze bepaald eerst de naam voor een tempbestand. Vervolgens wordt via een wscript shell het commando uitgevoerd met een piping naar het tempbestand. Daarna lees ik met VBScript het bestand weer in om te bepalen wat het resultaat is van het commando. Daarna wordt het tempbestand weer verwijderd.
Dit klinkt wel aardig maar het werkt niet. VBScript gaat namelijk door direct nadat de commandbox is geopend. De volgende stap wordt dan te vroeg uitgevoerd aangezien het tempbestand er nog niet is. de Run aanroepen met een bWaitOnReturn werkt ook niet. Het commando wordt dan op een vage wijze helemaal niet meer uitgevoerd. En omdat het een commandbox is wordt deze nooit automatisch beëindigd en dus gaat het script niet verder.
Wat ik dus wil is code die voor mij het commando uitvoert, het resultaat opvangt (direct of in een temp bestand) en daarna pas het resultaat analiseert. Dit alles moet het liefst verborgen voor de gebruiker gebeuren (zoals de ,0 doet bij shell.Run).
Ik heb tot nu toe de volgende sub hiervoor;
code:
1
2
3
4
5
6
7
8
9
| strTempOutputBestand = objFSO.GetSpecialFolder(TemporaryFolder) & objFSO.GetTempName
objShell.Run "cmd /C " & strPath & "con2prt.exe /c " & trim(strPrinter) & " > " & strTempOutputBestand
'if objFSO.OpenTextFile(strTempOutputBestand, OpenFileForReading).Read(6) = "Failed" then
intError = intError + 1
Call WriteLog(strPrinter, 4)
else
Call WriteLog(strPrinter, 0)
end if
objFSO.DeleteFile(strTempOutputBestand) |
Deze bepaald eerst de naam voor een tempbestand. Vervolgens wordt via een wscript shell het commando uitgevoerd met een piping naar het tempbestand. Daarna lees ik met VBScript het bestand weer in om te bepalen wat het resultaat is van het commando. Daarna wordt het tempbestand weer verwijderd.
Dit klinkt wel aardig maar het werkt niet. VBScript gaat namelijk door direct nadat de commandbox is geopend. De volgende stap wordt dan te vroeg uitgevoerd aangezien het tempbestand er nog niet is. de Run aanroepen met een bWaitOnReturn werkt ook niet. Het commando wordt dan op een vage wijze helemaal niet meer uitgevoerd. En omdat het een commandbox is wordt deze nooit automatisch beëindigd en dus gaat het script niet verder.
Wat ik dus wil is code die voor mij het commando uitvoert, het resultaat opvangt (direct of in een temp bestand) en daarna pas het resultaat analiseert. Dit alles moet het liefst verborgen voor de gebruiker gebeuren (zoals de ,0 doet bij shell.Run).
I'm not a complete idiot - several parts are missing.