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ée
Pour 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 que cmd.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 utilisant cmd.exe
, non PowerShell
, 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):
- Année (4 chiffres):
%date:~10,4%
- Mois (2 chiffres):
%date:~4,2%
- Jour (2 chiffres):
%date:~7,2%
- Heure (2 chiffres):
%time:~0,2%
- Minute (2 chiffres):
%time:~3,2%
- Deuxième (2 chiffres):
%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:
Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
Pour tester cela, exécutez la ligne de commande suivante:
cmd.exe /c echo "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt"
En mettant tout cela ensemble, pour rediriger à la fois stdout
et stderr
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:
cmd /c YourProgram.cmd > "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1
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:
cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1