web-dev-qa-db-fra.com

Windows: redirection de ligne de commande vers un fichier texte tout en affichant les résultats

J'écris un programme C sous Windows, mes appels printf sont imprimés en ligne de commande et je sais que je peux rediriger toute cette sortie vers un fichier texte à l'aide de:

myProgram.exe > mylog.txt

Cependant, je souhaite également voir le résultat qui aurait été imprimé sur la console et le consigner intégralement dans un fichier texte.

Y a-t-il un moyen de faire cela? Je pensais utiliser tail pour surveiller le fichier journal.

27
user79397

Les fenêtres de PowerShell ont un outil permettant de le faire, nommé tee après l'outil unix qui fait la même chose.

Alternativement, il existe des ports de la variable unix tee pour windows:

17
lesmana

Sous Windows, tout ce que je peux penser est de faire ceci:

myProgram.exe > mylog.txt & type mylog.txt

Ceci est basé sur l'exemple de commande dans votre question - si en fait vous vouliez ajouter la sortie à mylog.txt, vous voudriez utiliser >> au lieu de >, mais type afficherait le fichier journal entier, pas seulement ce qui avait été ajouté. .

Si vous téléchargez le fichier GnuWin32 CoreUtils , vous pouvez utiliser la méthode Unix (commande tee) pour cela:

myProgram.exe | tee mylog.txt

Ceci écrira la sortie de myProgram.exe dans mylog.txt mais l'affichera également sur la console en même temps. Si vous souhaitez uniquement ajouter à mylog.txt, vous pouvez passer le paramètre -a à tee.

7
Gaff

J'utilise le code Visual Studio et ouvre le fichier journal à partir de là. Il maintient la vue à jour en temps quasi réel lorsque le fichier journal est modifié.

0
Jaime Botero

Je viens d'avoir un besoin similaire et d'utiliser Tail comme le PO le suggérait:

>C:\Temp\Commands_Log.txt (
START tail.exe -f C:\Temp\Commands_Log.txt

Some_Commands
Other_Commands

echo.
echo ALL DONE HERE!
echo.
echo IT IS NOW SAFE TO CLOSE THIS WINDOW!
)

Le fichier "> C:\Temp\Commands_Log.txt" crée le fichier journal et ajoute la sortie de toutes les commandes situées entre les parenthèses.

La première commande à l'intérieur des parenthèses devrait être de démarrer la queue, qui s'ouvrira dans une nouvelle fenêtre de commande.

Les échos à la fin sont destinés aux utilisateurs inconnus qui doivent leur faire savoir que tout est terminé.

0
DBADon