Dans mon code C#, je dois exécuter des processus externes. Ceux-ci peuvent être des fichiers batch ou des exécutables. Je redirige la sortie à une fenêtre de moi-même en ayant RedirectStandardOutput
du ProcessStartInfo
être vrai. Cela permet à l'utilisateur de revoir la sortie même après la fin du processus externe. Je redirige également l'entrée afin que l'utilisateur puisse appuyer sur les touches si nécessaire. Cela fonctionne très bien en général.RedirectStandardOutput et la commande pause dans les fichiers batch
Cependant, j'ai un problème. Certains fichiers de traitement par lots utilisent la commande PAUSE
. Apparemment, la sortie n'est pas vidée par la commande tant qu'une touche n'a pas été pressée. Ainsi, l'utilisateur ne voit jamais l'invite. Donc, seulement après qu'une touche a été pressée, l'utilisateur verra qu'il aurait dû appuyer sur une touche pour continuer. Y at-il un moyen de faire ce travail (en dehors de "Ne pas utiliser PAUSE")?
EDIT: Les fichiers batch exécutent le post-processeur CAM de l'utilisateur et sont généralement créés par l'utilisateur (ou le service informatique de l'utilisateur). Donc, nécessitant des changements à ces fichiers ou "piratage" en créant un pause.exe ne sont pas des solutions vraiment viables (sauf en dernier recours).
Ceci redirige l'entrée, de sorte que la commande de pause est ignorée. Mais je veux que la commande pause fonctionne (et c'est le cas). Le problème est que le texte n'est pas écrit en sortie, donc l'utilisateur ne sait pas appuyer sur une touche pour continuer. –
@Daniel Voir ma modification. Je ne sais pas pourquoi le balisage est faux dans l'implémentation de pause() –
Malheureusement, les fichiers batch sont fournis par l'utilisateur (ils exécutent le post-processeur CAM). Remplacer la commande de pause (ou leur dire "Ne pas utiliser de pause") sont deux solutions possibles, mais ni "solution" n'est vraiment ce que je voudrais faire. –