Bonjour,
Je fais face à un problème avec un VBScript, l'exécution d'un programme à l'aide de l'objet WScript.Shell et la lecture de StdErr et StdOut.
Concrètement, lorsque j'exécute un programme depuis mon VBScript, et que le texte envoyé en sortie (stdout) par ce programme est supérieur à 4096 bytes, il m'est impossible de lire stderr. En effet, lorsque j'essaie de lire stderr, le script freeze tout simplement à cet endroit.
J'ai trouvé un workaround, à savoir rediriger stderr dans un fichier, le lire à l'aide de mon script afin de savoir s'il y a eu une erreur ou non, puis je traite normalement mon stdout.
Ca fonctionne très bien mais je voudrais savoir si quelqu'un ici a déjà eu le même problème et s'il a trouvé une solution différente de la mienne.
Code test.vbs:
Code test.bat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 set WshShell = WScript.CreateObject("WScript.Shell") Exec01="C:\tmp\test.bat" Set Cmd01=WshShell.exec(Exec01) Cmd01_Error=Cmd01.StdErr.ReadAll ' cette partie là fait freezer le script lorsque stdout > 4096B WScript.Echo(Cmd01_Error) do while Cmd01.StdOut.AtEndOfStream <> True Cmd01_Line=Cmd01.StdOut.ReadLine WScript.Echo(Cmd01_Line) Loop
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 @echo "blablablabla" @echo "blablablabla" @echo "blablablabla" @echo "blablablabla" rem jusqu'à ce que la sortie dépasse 4096B
Merci d'avance et bonne continuation pour ce forum très utile.
RWD.
Partager