web-dev-qa-db-fra.com

Date actuelle dans le nom du fichier

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.

15
Bogdan Gusiev

Dans la commande Invite et 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

pdate: Les commentaires ci-dessous présentent des rebondissements intéressants sur cette commande ainsi que certains problèmes potentiels que vous pouvez éviter.

21
aalaap

Utilisez le %DATE% et/ou %TIME variables d'environnement, 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 "écho% 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 
14
user1686

Le seul moyen fiable d'obtenir la date appropriée quel que soit le paramètre régional est la solution de foxidrive @ https://stackoverflow.com/questions/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
4
Eric Ouellet

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
1
Frode Lillerud