À l'aide de Windows Server 2008, comment puis-je capturer la sortie d'un script en cours d'exécution avec le planificateur de tâches Windows?
Je teste un script batch d'impression personnalisé assez long, et à des fins de débogage, j'aimerais voir toute la sortie de celui-ci chaque nuit.
batch-file
scheduled-tasks
Méchaflash
la source
la source
Réponses:
Essayez ceci comme chaîne de commande dans le planificateur de tâches:
la source
cmd /c "path with spaces/command.cmd > file.txt"
si vous avez des espaces. La réponse2>&1
d' Ivan entre également dans les guillemets.cmd /c ""C:\temp\My test dir\something 123\myTool.exe" > Tilo_log.txt 2>&1"
Avec stderr (où la plupart des erreurs vont):
la source
Pour compléter la réponse de @ user2744787, voici une capture d'écran pour montrer comment utiliser
cmd
avec des arguments dans une tâche planifiée:Programme / script:
cmd
Ajouter des arguments:
/c run_with_default_port.bat > IMQuantWebServices.log
la source
Le
>>
ajoutera le fichier journal, plutôt que de l'écraser à chaque fois. Le2>&1
enverra également des erreurs dans votre fichier journal.la source
Vous pouvez avoir un debug.cmd qui appelle yourscript.cmd
vous planifiez debug.cmd au lieu de yourscript.cmd
la source
Utilisez le
cmd.exe
processeur de commandes pour créer un nom de fichier horodaté afin de consigner la sortie de votre tâche planifiéePour construire sur les réponses d'autres personnes ici, il se peut que vous souhaitiez créer un fichier de sortie dont la date et / ou l'heure sont incorporées dans le nom du fichier. Vous pouvez utiliser le
cmd.exe
processeur de commandes pour le faire pour vous.Remarque: Cette technique prend la sortie de chaîne des variables d'environnement Windows internes et les découpe en fonction de la position des caractères. Pour cette raison, les valeurs exactes fournies dans les exemples ci-dessous peuvent ne pas être correctes pour la région de Windows que vous utilisez. De plus, avec certains paramètres régionaux, certains composants de la date ou de l'heure peuvent introduire un espace dans le nom de fichier construit lorsque leur valeur est inférieure à 10. Pour atténuer ce problème, entourez votre nom de fichier de guillemets afin que tous les espaces non souhaités dans le fichier name ne cassera pas la ligne de commande que vous construisez. Expérimentez et trouvez ce qui fonctionne le mieux pour votre situation.
Sachez que
PowerShell
c'est plus puissant quecmd.exe
. L'une des façons dont il est plus puissant est qu'il peut gérer différentes régions Windows. Mais cette réponse consiste à résoudre ce problème en utilisantcmd.exe
, nonPowerShell
, alors nous continuons.En utilisant
cmd.exe
Vous pouvez accéder à différents composants de la date et de l'heure en découpant les variables d'environnement internes
%date%
et%time%
, comme suit (encore une fois, les valeurs de découpage exactes dépendent de la région configurée dans Windows):%date:~10,4%
%date:~4,2%
%date:~7,2%
%time:~0,2%
%time:~3,2%
%time:~6,2%
Supposons que vous souhaitiez que votre fichier journal soit nommé en utilisant ce format de date / heure: "
Log_[yyyyMMdd]_[hhmmss].txt
". Vous utiliseriez ce qui suit:Pour tester cela, exécutez la ligne de commande suivante:
En mettant tout cela ensemble, pour rediriger à la fois
stdout
etstderr
depuis votre script vers un fichier journal nommé avec la date et l'heure actuelles, utilisez peut-être utiliser ce qui suit comme ligne de commande:Notez l'utilisation de guillemets autour du nom de fichier pour gérer les instances où un composant de date ou d'heure peut introduire un caractère espace.
Dans mon cas, si la date / heure actuelle était 10/05/2017 9:05:34 AM, la ligne de commande ci-dessus produirait ce qui suit:
la source
Vous pouvez écrire dans un fichier journal sur les lignes que vous souhaitez afficher comme ceci:
De cette façon, vous pouvez choisir les commandes à afficher si vous ne voulez pas tout parcourir, obtenez simplement ce dont vous avez besoin. Le le
>
sortira dans le fichier spécifié (en créant le fichier s'il n'existe pas et en l'écrasant s'il existe). Le>>
ajoutera au fichier spécifié (en créant le fichier s'il n'existe pas mais en l'ajoutant au contenu s'il existe).la source
Exemple comment exécuter le programme et écrire stdout et stderr dans un fichier avec horodatage:
La partie clé est de doubler la partie entière derrière
cmd /c
et à l'intérieur d'utiliser des guillemets doubles comme d'habitude. Notez également que la date dépend des paramètres régionaux, cet exemple fonctionne avec les paramètres régionaux américains.la source
Cet extrait de code utilise wmic.exe pour créer la chaîne de date. Il n'est pas mutilé par les paramètres régionaux
la source