Batch : Afficher la date et l'heure dans un script (partie 2)

Plusieurs solutions existent pour afficher la date et l'heure courante dans un script batch.

Vous trouverez sur cette page la deuxième solution (parmi d'autres) pour afficher ces données.

En utilisant la première solution, vous apprendrez également à manipuler les chaînes de caractères, mais le principal défaut est que vous ne pouvez pas l'utiliser pour créer un fichier (voir plus bas pour plus d'explications)

En utilisant cette seconde solution, vous découvrirez la puissance de la boucle for !

Utiliser la boucle for

En combinant la boucle for et la commande date ou time, vous pouvez également récupérer la date et l'heure.

Récupérer la date complète dans une variable

Voici la syntaxe pour découper la date dans le format aaaammjj :

@echo off
for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do set maDate=%%c%%b%%a
echo Date : %maDate%

Le résultat de ce script est :

Date : 20131003

Explications :

  • date /t : Affiche la date avec le format suivant : jj/mm/aaaa
  • delims=/ : Les séparateurs des "mots" sont le slash (/) et l'espace
  • tokens=1,2,3: Récupère les "mots" en position 1, 2 et 3 qui seront respectivement %%a, %%b et %%c

Récupérer le jour le mois et l'année dans des variables

En utilisant la syntaxe précédente, vous pouvez bien sur récupérer les données séparément :

@echo off
for /f "delims=/ tokens=1,2,3" %%a in ('date /t') do set jour=%%a
for /f "delims=/ tokens=1,2,3" %%a in ('date /t') do set mois=%%b
for /f "delims=/ tokens=1,2,3" %%a in ('date /t') do set annee=%%c
echo Jour : %jour%
echo Mois : %mois%
echo Annee : %annee%

Le résultat de ce script est :

Jour : 03
Mois : 10
Annee : 2013

Récupérer l'heure complète dans une variable

Toujours avec cette syntaxe, vous pouvez récupérer l'heure courante. Contrairement à la solution 1, l'espace ne sera pas ajouté pour les heures inférieures à 10. Vous pouvez donc utiliser cette solution pour créer un nom de fichier contenant la date et l'heure :

@echo off
for /f "tokens=1,2,3 delims=:" %%a in ('time /t') do set heure=%%a
for /f "tokens=1,2,3delims=:" %%a in ('time /t') do set minute=%%b
echo Heure : %heure%
echo Minute : %minute%

echo Test > fichier_%heure%%minute%.txt

Le résultat de ce script est :

Heure : 19
Minute : 42

Explications :

  • time /t : Affiche l'heure avec le format suivant : hh:mm
  • La dernière ligne va créer un fichier contenant le mot "Test" et son nom contiendra l'heure courante au format hhmm

Obtenir le 0 initial sans utiliser la boucle for

Voici deux autres solutions, données par des lecteurs, pour obtenir le 0 initial aux heures < 10

Première solution

@echo off
set hh0=%time:~0,2%
set /a hh1=%hh0%+100
set hh=%hh1:~1,2%
echo heure0=[%hh0%]
echo heure1=[%hh1%]
echo heure=[%hh%]

Le résultat de ce script est :

heure0=[8]
heure1=[108]
heure1=[08]

Explications :

  • Ajouter 100 à l'heure pour ensuite récupèrer les deux derniers chiffres

Deuxième solution

@echo off
set heure=%time:~0,2%
if "%heure:~0,1%" == " " set heure=0%heure:~1,1%
echo heure=[%heure%]

Le résultat de ce script est :

heure=[08]

Explications :

  • Si après découpage des deux premiers caractères, le premier caractère est un espace, alors on ajoute le 0 initial
X.com Facebook Email

Posté le 03-10-2013