623 votes

Comment puis-je obtenir la date et l'heure actuelles sur la ligne de commande Windows dans un format approprié pour être utilisé dans un nom de fichier/dossier ?

Mise à jour : Maintenant que nous sommes en 2016, j'utiliserais PowerShell pour cela, à moins qu'il n'y ait une raison de rétrocompatibilité vraiment convaincante, notamment en raison du problème des paramètres régionaux avec l'utilisation de date . Voir @npocmaka's https://stackoverflow.com/a/19799236/8479


Quelle(s) instruction(s) de ligne de commande Windows puis-je utiliser pour obtenir l'heure actuelle dans un format que je peux mettre dans un nom de fichier ?

Je veux avoir un fichier .bat qui zippe un répertoire dans une archive avec la date et l'heure actuelles dans le nom, par exemple, Code_2008-10-14_2257.zip . Existe-t-il un moyen simple de le faire, indépendamment des paramètres régionaux de la machine ?

Le format de la date ne me dérange pas vraiment, l'idéal étant que ce soit aaaa-mm-jj, mais tout ce qui est simple me convient.

Jusqu'à présent, j'ai obtenu ceci, ce qui sur ma machine me donne Tue_10_14_2008_230050_91 :

rem Get the datetime in a format that can go in a filename.
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%

rem Now use the timestamp by in a new ZIP file name.
"d:\Program Files\7-Zip\7z.exe" a -r Code_%_my_datetime%.zip Code

Je peux vivre avec ça, mais ça semble un peu lourd. L'idéal serait qu'elle soit plus brève et qu'elle ait le format mentionné plus haut.

J'utilise Windows Server 2003 et Windows XP Professional. Je ne souhaite pas installer d'utilitaires supplémentaires pour y parvenir (bien que je sache qu'il en existe qui permettent un formatage agréable des dates).

10 votes

Créer une sauvegarde automatique de votre code ? C'est bien ! Nous devrions le faire aussi :)

33 votes

Utiliser les gens de powershell... [datetime]::now.tostring("yyyy-MM-dd")

0 votes

Est-il possible de charger des fichiers avec la date de création en utilisant xp_cmdshell dans SQL Server ? J'ai posé une question sur stackoverflow, veuillez consulter le lien @ stackoverflow.com/q/32293517/3327081

37voto

foxidrive Points 19298

Les quatre premières lignes de ce code vous donneront des variables fiables YY DD MM YYYY HH Min Sec sous Windows XP Professional et supérieur.

@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

0 votes

Parfait, c'est la meilleure solution pour moi car en appelant PS, l'apparence du texte de la commande devient bizarre.

27voto

Mark Ransom Points 132545

Malheureusement, ce système n'est pas insensible aux paramètres régionaux, mais il fait ce que vous voulez.

set hour=%time:~0,2%
if "%time:~0,1%"==" " set hour=0%time:~1,1%
set _my_datetime=%date:~10,4%-%date:~4,2%-%date:~7,2%_%hour%%time:~3,2%

C'est incroyable tout ce qu'on peut trouver sur Wikipedia .

1 votes

Mark - Trouvé Variables d'environnement de Cmd.exe avec Colonne et Tilde qui décrit la technique de "découpage" variable exposée dans votre réponse. Je ne trouve plus cette information dans l'article de Wikipedia. J'aimerais trouver une référence officielle de Microsoft.

1 votes

Voici la réponse de Microsoft Référence des fichiers batch pour Windows XP . Cette référence comprend Utilisation des paramètres de lot . Malheureusement, il n'y a pas de discussion sur la technique du "découpage en tranches".

23voto

sudipto roy Points 61

Veuillez utiliser le script suivant pour obtenir le jour actuel dans la ligne de commande :

echo %Date:~0,3%day

12 votes

J'ai joué un peu avec cette méthode, c'est la plus courte que j'ai trouvée pour obtenir la date et l'heure : echo %date% %time%.

0 votes

C'est, à mon avis, la solution la plus simple si vous souhaitez utiliser la date et l'heure uniquement à des fins de journalisation...

17voto

DigiP Points 101
"d:\Program Files\7-Zip\7z.exe" a -r code_%date:~10,4%-%date:~4,2%-%date:~7,2%.zip

1 votes

http://www.dotnetperls.com/7-zip-examples a quelques bons points peut être utile pour quelqu'un à l'avenir.

15voto

J c Points 3498

Une autre façon ( crédit ):

@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @( 
    Set Month=%%A
    Set Day=%%B
    Set Year=%%C
)

@echo DAY = %Day%
@echo Month = %Month%
@echo Year = %Year%

Notez que mes deux réponses dépendent toujours de l'ordre du jour et du mois tel que déterminé par les paramètres régionaux - je ne sais pas comment contourner cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X