1 votes

Comment capturer la sortie d'une fenêtre de commande lancée par une autre application ?

Problème

J'utilise une application GUI qui écrit la sortie de débogage dans une fenêtre de commande (uniquement là, pas d'autre journal). Lorsque l'application se bloque, la fenêtre de commande disparaît avec toute la sortie.

Pregunta

Comment puis-je capturer la sortie de la fenêtre de commande dans un fichier texte ?

Ce que j'ai essayé

Comme je n'ai trouvé aucun moyen d'interagir avec la fenêtre de commande, j'ai eu recours à l'enregistrement d'écran. C'est loin d'être idéal car je ne peux pas sélectionner ou copier le texte facilement.

1voto

harrymc Points 394411

Desde prog.exe > file.txt fonctionne pour toutes les sorties sauf la dernière, nous savons maintenant que le programme GUI utilise une sortie standard qui peut être capturée dans les bonnes conditions.

Vous devrez utiliser PowerShell avec la cmdlet appelée Tee-Objet dont l'alias est tee (dans l'esprit de Linux). Cette commande produit un fichier et le transmet également à la sortie standard.

La commande PowerShell à utiliser peut ressembler à ceci :

Start-Process -FilePath "\path\prog.exe" | tee -filepath \path\file.txt

Ceci enverra la sortie à \path\file.txt ainsi qu'à la console.

0voto

Apache Points 15675

Il y a peut-être un moyen de "récupérer" les données de la fenêtre cmd d'une manière ou d'une autre. Comme les lire à partir de la mémoire ou quelque chose comme ça. Mais je n'ai jamais vu de telles méthodes. J'utiliserais simplement AutoHotkey.

https://autohotkey.com/board/topic/9953-how-to-capture-intire-cmdexe-text/

1) Recherchez la fenêtre cmd par son titre. AutoHotkey dispose d'un outil appelé "Window Spy". https://amourspirit.github.io/AutoHotkey-Snippit/WindowSpy.html Utilisez cet outil pour obtenir le titre et les détails de la fenêtre afin de pouvoir les rechercher ultérieurement.

2) Vous n'avez besoin que de la séquence pour capturer le courant de sortie. Par exemple :
Alt+Space;E;S; # marquer tout
Alt+Space;E;Y; # Copie

2) Faire en sorte que le script soit exécuté périodiquement. Voir loop y sleep mots-clés.
Vous pouvez même faire basculer le script via une variable :

F12::
stopit = 0
While stopit = 0
{
    Loop, 70
    {

        Click
        if stopit = 1
        {
                exit
        }    
    }
    Sleep, 2000

}
return

F10::
    stopit = 1
return

Source - utilisateur : left1000, via : https://autohotkey.com/board/topic/54-loop-until-key-is-pressed/

3) Rédigez simplement le contenu que vous avez saisi dans un fichier texte. https://www.autohotkey.com/docs/commands/FileAppend.htm

Je pense que cela pourrait être copié-collé à partir des documents Autohotkey et Google en ~5-15 minutes. Je ne peux pas vous fournir un exemple complet / script car je ne sais pas de quelle application il s'agit, je ne peux pas tester le script, etc. C'est donc le maximum que je puisse faire dans ce cas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X