J'ai planifié un script de sauvegarde qui effectue le vidage de la base de données. Comment puis-je ajouter l'horodatage de la date au nom de fichier?
Je parle de Windows et CMD.
J'ai planifié un script de sauvegarde qui effectue le vidage de la base de données. Comment puis-je ajouter l'horodatage de la date au nom de fichier?
Je parle de Windows et CMD.
Réponses:
Dans l'invite de commande et les fichiers batch, vous pouvez utiliser %date%
et %time%
pour renvoyer la date et l'heure respectivement. La date fonctionne bien, mais la valeur d'heure renvoyée contient des deux-points, dont l'utilisation dans les noms de fichiers est illégale, mais il existe un moyen de les supprimer.
Utilisez quelque chose comme:
COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt
Cela produira un nom de fichier tel que file_172215_01062009.txt
Mise à jour: les commentaires ci-dessous présentent des rebondissements intéressants sur cette commande ainsi que certains problèmes potentiels que vous pouvez éviter.
%DATE%
et %TIME%
sont sensibles aux paramètres régionaux! Cela signifie que sur une machine européenne, vous obtenez DD.MM.YYYY
. Arrgh.
Utilisez les variables d'environnement %DATE%
et / ou %TIME
, en remplaçant éventuellement les caractères qui ne sont pas autorisés dans les noms de fichiers, en utilisant %name:from=to%
( %TIME::=%
supprimerait tous les deux-points).
théorie »echo% date% 2009-06-01 théorie »écho% temps% 16: 30: 41,46 théorie »écho% temps :: =% 163052,17 théorie »écho% temps :: =,% 16,30,58,68 théorie »echo backup-% date% -% time :: = -%. zip backup-2009-06-01-16-31-18,82.zip
set tmp=%tmp:x=y%
etc.
Le seul moyen fiable d'obtenir la date appropriée quel que soit le paramètre régional est la solution de foxidrive @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-script
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause
Utilisez la variable% DATE% dans le nom de fichier.
Il existe également une variable% TIME%, mais elle contient des caractères non autorisés dans un nom de fichier.
Voici un exemple d'écriture d'une ligne de texte dans un nouveau fichier, où le fichier créé a une date et une heure dans son nom.
echo "testfile" >> backup-%DATE%.txt