Utiliser la date de la veille de façon simple, en batch

« Bah, il suffit juste de retirer 1 à la date du jour… »

Moui… mais non. Ce n’est pas en retirant 1 au 1er janvier que ça nous donnera la date du 31 décembre.

Il existe sur Internet une multitude de solutions diverses, comme de gros scripts batch ou de simples scripts VBS. La solution que j’utilise n’est peut-être pas la meilleure, mais a le mérite d’être simple à mettre en place, simple à comprendre, et facilement adaptable.

Le principe est le suivant :

JOUR 0

- enregistrer la date du jour dans un fichier X (contiendra la date du jour 0)

JOUR 1

- récupérer le contenu du fichier X (contient la date du jour 0)
- remplacer le contenu du fichier X (contiendra la date du jour 1)

JOUR 2

- récupérer le contenu du fichier X (contient la date du jour 1)
- remplacer le contenu du fichier X (contiendra la date du jour 2)

Et ainsi de suite. Les fins de semaine, jours fériés et chômés ne sont pas une difficulté tant que le fichier X est écrasé après chaque journée d’utilisation et non pas de manière automatique. Ainsi, dans le cas d’un traitement du lundi au vendredi, le fichier X contiendra le lundi la date du vendredi.

Passons à la pratique.

Insertion de la date :

@echo off
echo %date% > %TEMP%\date_veille.txt
exit

A noter que vous pouvez adapter la date en fonction de vos envies :

- en retirant les slashs (echo %date:/=%),
- en remplaçant les slashs par des tirets (echo %date:/=-%),
- en changeant l’ordre pour année/mois/jour (echo %date:~6%/%date:~3,2%/%date:~0,2%)
- …

Récupération de la date :

@echo off
for /f "delims=" %%a in ('type %TEMP%\date_veille.txt') do set date_veille=%%a
echo La date de la veille est : %date_veille%
echo.
pause
exit

Il existe toutefois une alternative : placer la date du jour dans une variable… et mettre le script en pause, via un énorme sleep, jusqu’à l’utilisation du lendemain. Mais avoir un script lancé pendant peut-être plus de 10 heures n’est pas forcément une bonne idée…



Laisser un commentaire

Votre commentaire