J'utilise un script de ligne de commande pour ajuster plusieurs paramètres sur un ordinateur. Cependant, je voudrais que la sortie entière soit également connectée dans un fichier .txt ou .log.
Lorsque j'utilise mes connaissances de base du système de journalisation, il place la sortie dans un fichier mais ne l'exécute pas réellement. Dans mon cas, j'aurais besoin qu'il soit exécuté puis connecté à un fichier pour référence ultérieure.
Quelqu'un pourrait-il me dire comment procéder?
Merci d'avance! Dempsey
command-line
logging
cmd.exe
Dempsey FoxDie Van Assche
la source
la source
Réponses:
Si la question demande qu'un script soit "exécuté" et que l'intégralité du fichier de commandes soit exporté vers un fichier journal dans Windows 8.1, alors voici la réponse simple:
Incluez-le au début de votre fichier de commandes ...
la source
Dans votre question, vous mentionnez:
Puisque vous dites que le programme est en cours d'exécution et que sa sortie est placée dans le fichier, j'ai pensé que vous auriez pu vouloir dire "affiché" , au lieu de "exécuté" .
Si ce n'est pas ce que vous vouliez dire, cela aurait probablement aidé si cela était mieux expliqué, peut-être avec un exemple de sortie.
Dans tous les cas, je poste cette réponse au cas où d'autres trouveraient cette question / réponse utile.
Donc, fondamentalement, il semble que vous souhaitiez que la sortie d'un script soit capturée dans un fichier et que vous puissiez également voir la sortie du script à l'écran pendant l'exécution du script.
(tl; version dr: utilisez wintee , comme ceci:
script 2>&1 | wtee logfile.txt
)Pour cet article, j'utiliserai un petit fichier batch de test, mais votre script pourrait être aussi gros et compliqué ou aussi simple que vous en avez besoin:
Voici ce qui se passe lorsque j'exécute ce script batch:
Notez que dans le script de test, la première exécution de la commande "dir" réussit et la seconde échoue. Je fais cela uniquement pour montrer ce qui se passera avec les "messages d'erreur" lorsque vous exécuterez votre script.
Si j'exécute le script et utilise la redirection ( ">" ) pour capturer la sortie, je verrai ceci
Notez que le message d'erreur "Fichier non trouvé" a été affiché à l'écran lors de l'exécution du script et n'a pas été réellement capturé dans le fichier. C'est parce que ">" capture la "sortie normale" qui a été envoyée au flux STDOUT. Les "messages d'erreur" sont normalement envoyés au flux STDERR.
Pour capturer la "sortie normale" et les "messages d'erreur", vous devez également capturer le flux STDERR, qui est indiqué par le "2" dans "2> & 1" dans la commande ici:
Sous Unix, il existe une commande standard:
"tee"
En utilisant la commande "tee", vous pouvez capturer la sortie d'un programme, et également afficher la sortie à l'écran en même temps.
La commande "tee" n'est pas standard avec Windows, mais vous pouvez télécharger une version gratuite de "tee" pour Windows ici: wintee . Le programme téléchargé est nommé:
"wtee.exe"
.Vous utilisez le programme "wtee.exe" comme indiqué ci-dessous.
Cela capturera la sortie du script dans le fichier nommé
"log.txt"
comme précédemment, et affichera également la sortie à l'écran pendant l'exécution du script:la source
Ce script exécutera ls et enregistrera sa sortie dans un fichier appelé log.txt:
Le journal ne sera pas exécuté.
la source