Mise à jour: Maintenant que nous sommes en 2016, j'utiliserais PowerShell pour cela, sauf s'il y a une raison vraiment rétrocompatible pour cela, en particulier en raison du problème des paramètres régionaux avec l'utilisation date
. Voir le https://stackoverflow.com/a/19799236/8479 de @ npocmaka
Quelle (s) instruction (s) de ligne de commande Windows puis-je utiliser pour obtenir la date / heure actuelle dans un format que je peux insérer 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, idéalement ce serait aaaa-mm-jj, mais tout ce qui est simple est bien.
Jusqu'à présent, j'ai ceci, 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 maladroit. Idéalement, il serait plus bref et aurait le format mentionné précédemment.
J'utilise Windows Server 2003 et Windows XP Professionnel. Je ne veux pas installer d'utilitaires supplémentaires pour y parvenir (bien que je réalise qu'il y en a qui feront un bon formatage de date).
[datetime]::now.tostring("yyyy-MM-dd")
Réponses:
Voir Fichier batch Windows (.bat) pour obtenir la date actuelle au format MMDDYYYY :
Si vous préférez l'heure au format 24 heures / militaire, vous pouvez remplacer la deuxième ligne FOR par ceci:
Si vous voulez la date indépendamment de l'ordre de jour / mois de la région, vous pouvez utiliser "WMIC os GET LocalDateTime" comme source, car elle est dans l'ordre ISO:
la source
For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%b-%%a)
de la deuxième ligne.For /f "tokens=1-2 delims=/: " %%a in ("%TIME%") do (if %%a LSS 10 (set mytime=0%%a%%b) else (set mytime=%%a%%b))
Cela renvoie des valeurs comme "0001" et "0315" que je préfère dans mes noms de fichiers.wmic
commande! Jusqu'à présent, je l'ai seulement vuWMIC Path Win32_LocalTime Get Day,Hour,Minute,Month,Second,Year /Format:table
. De même, pour accéder20120623-1619
à mon fuseau horaire local d'Amsterdam, en une seule ligne:for /f %%a in ('wmic os get LocalDateTime ^| findstr ^[0-9]') do (set ts=%%a) & set datetime=%ts:~0,8%-%ts:~8,4%
%%a was unexpected at this time.
Analyse de la date et de l'heure indépendante de la région
Le format de sortie de
%DATE%
et de ladir
commande dépend de la région et n'est donc ni robuste ni intelligent. date.exe (qui fait partie d' UnxUtils ) fournit toutes les informations de date et d'heure dans n'importe quel format pensable. Vous pouvez également extraire les informations de date / heure de n'importe quel fichier avecdate.exe
.Exemples: (dans un script cmd, utilisez %% au lieu de%)
date.exe +"%Y-%m-%d"
2009-12-22
date.exe +"%T"
18:55:03
date.exe +"%Y%m%d %H%M%S: Any text"
20091222 185503: N'importe quel texte
date.exe +"Text: %y/%m/%d-any text-%H.%M"
Texte: 09/12/22-tout texte-18,55
Command: date.exe +"%m-%d """%H %M %S """"
07-22 "18:55:03" "
Les informations de date / heure d'un fichier de référence:
date.exe -r c:\file.txt +"The timestamp of file.txt is: %Y-%m-%d %H:%M:%S"
L'utiliser dans un script CMD pour obtenir des informations sur l'année, le mois, le jour et l'heure:
L'utiliser dans un script CMD pour obtenir un horodatage dans n'importe quel format requis:
Extraire les informations de date / heure de n'importe quel fichier de référence.
Ajout à un fichier de ses informations de date / heure:
date.exe fait partie des outils GNU gratuits qui ne nécessitent aucune installation.
REMARQUE: la copie
date.exe
dans n'importe quel répertoire qui se trouve dans le chemin de recherche peut entraîner l'échec d'autres scripts utilisant ladate
commande intégrée de Windows .la source
date.exe
semble dépendre des paramètres régionaux. Il renvoie la date en jj / MM / aaaa sur mon système, si elle était indépendante des paramètres régionaux, je m'attendrais à MM / jj / aaaa ou aaaa-MM-jj. Je ne pense pas que cette réponse parle du date.exe intégré mais d'une version tierce de celui-ci.Deux autres façons qui ne dépendent pas des paramètres d'heure (toutes deux tirées de : Comment rendre les données / l'heure indépendantes de la localisation:) . Et les deux obtiennent également le jour de la semaine et aucun d'entre eux ne nécessite des autorisations d'administrateur!:
MAKECAB - fonctionnera sur CHAQUE système Windows (rapide, mais crée un petit fichier temporaire) (le script foxidrive):
Plus d'informations sur la fonction get-date .
ROBOCOPIE - ce n'est pas une commande native pour Windows XP et Windows Server 2003, mais elle peut être téléchargée à partir du site Microsoft . Mais il est intégré à tout depuis Windows Vista et supérieur:
Et trois autres façons d'utiliser d'autres langages de script Windows. Ils vous donneront plus de flexibilité, par exemple, vous pouvez obtenir la semaine de l'année, le temps en millisecondes, etc.
Hybride JScript / batch (doit être enregistré sous
.bat
). JScript est disponible sur tous les systèmes NT et au-dessus, en tant que partie de Windows Script Host ( bien qu'il puisse être désactivé via le registre, c'est un cas rare ):Hybride VSCRIPT / BATCH ( Est-il possible d'incorporer et d'exécuter VBScript dans un fichier batch sans utiliser de fichier temporaire? ) Même cas que JScript, mais l'hybridation n'est pas si parfaite:
PowerShell - peut être installé sur chaque machine disposant de .NET - téléchargement depuis Microsoft ( v1 , v2 , v3 (uniquement pour Windows 7 et supérieur)). Il est installé par défaut sur tout depuis Windows 7 / Windows Server 2008 et supérieur:
Pour l'utiliser à partir d'un fichier batch:
Auto-compilé jscript.net/batch (jamais vu une machine Windows sans .NET, donc je pense que c'est assez portable):
Logman Cela ne peut pas obtenir l'année et le jour de la semaine. Il est relativement lent et crée également un fichier temporaire et est basé sur les horodatages que logman place sur ses fichiers journaux. Il fonctionnera sur tout, à partir de Windows XP et supérieur. Il ne sera probablement jamais utilisé par personne - y compris moi - mais c'est une autre façon ...
Une autre façon avec WMIC qui donne également la semaine de l'année et le jour de la semaine, mais pas les millisecondes (pour les millisecondes, vérifiez la réponse de foxidrive):
Utiliser TYPEPERF avec quelques efforts pour être rapide et compatible avec différents paramètres de langue et aussi rapidement que possible:
MSHTA permet d'appeler des méthodes JavaScript similaires à la méthode JScript illustrée au n ° 3 ci-dessus. Gardez à l'esprit que les propriétés d'objet Date de JavaScript impliquant des valeurs de mois sont numérotées de 0 à 11, et non de 1 à 12. Ainsi, une valeur de 9 signifie octobre.
la source
makecab
: cela fonctionne en créant un fichier appelé~.rpt
, et en recherchant unstring
dedans, en commençant parmakecab
, qui est comme une ligneMakeCAB Report: Tue Sep 02 22:15:57 2014
. pour moi, cette commande n'est pas localisée, elle est indépendante des paramètres régionaux. Cette astuce repose sur cela. Espérons que ce ne sera jamais le cas, sinon méfiez-vous!mshta
hybride? :) Ça vous dérange si je modifie votre réponse et en ajoute une? Cela semble être la meilleure collection de solutions ésotériques, et il semble que celamshta
appartient ici.Voici une variante de alt.msdos.batch.nt qui fonctionne localement indépendamment.
Mettez-le dans un fichier texte, par exemple getDate.cmd
Pour que le code fonctionne sans msg d'erreur sur stderr, j'ai dû ajouter des guillemets simples pour les affectations de variables pour %% a, %% b et %% c. Mon environnement local (PT) provoquait des erreurs à un moment de la boucle / analyse où des choses comme "set = 20" étaient exécutées. Les guillemets produisent un jeton (bien que vide) pour le côté gauche de l'instruction d'affectation.
L'inconvénient est le nom des variables locales malpropres: «aa», «mm» et «jj». Mais bon, peu importe!
la source
dd
,mm
etyy
dans la sortieecho:^|date
.date
donneGeben Sie das neue Datum ein: (TT-MM-JJ)
, où lesJJ
casse votre script (attendYY
))J'utilise ceci (encore une fois pas indépendant de la région (UK))
la source
Les quatre premières lignes de ce code vous fourniront des variables fiables YY DD MM YYYY HH Min Sec dans Windows XP Professionnel et versions ultérieures.
la source
Malheureusement, ce n'est pas à l'abri des paramètres régionaux, mais il fait ce que vous voulez.
Incroyable ce que vous pouvez trouver sur Wikipedia .
la source
Veuillez utiliser le script suivant pour obtenir le jour en cours dans la ligne de commande:
la source
Une autre façon ( crédit ):
Notez que mes deux réponses ici 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.
la source
la source
http://www.dotnetperls.com/7-zip-examples
a quelques bons points peut être utile pour quelqu'un à l'avenir.Ce n'est pas vraiment plus bref mais pourrait être un moyen plus flexible ( crédit ):
la source
Voici un moyen d'obtenir l'heure de la date sur une seule ligne:
Aux États-Unis, cela produira "aaaa-mm-jj hhmm". Différents paramètres régionaux entraîneront des sorties% date% différentes, mais vous pouvez modifier l'ordre des jetons.
Si vous souhaitez un format différent, modifiez l'instruction echo en réorganisant les jetons ou en utilisant des séparateurs différents (ou aucun).
la source
Utilisez simplement cette ligne:
la source
Réponse courte :
Longue réponse
la source
La solution à une ligne de Matthew Johnson pour obtenir la date et l'heure à une ligne est éloquente et utile.
Il a cependant besoin d'une simple modification pour fonctionner à partir d'un fichier batch:
la source
echo %date:/=-%%time::=-%
Et voici un fichier batch similaire pour la partie temps.
--jeroen
la source
z: & forfiles /m *.jpg /s /d 07/16/2015 /c “cmd /c echo @fdate @ftime @path”
mais je veux savoir comment charger des fichiers selon la date de création. Toute aide serait très appréciée. Une question a été posée sur stackoverflow mais aucune réponse pour le moment. Veuillez consulter le lien pour les détails stackoverflow.com/q/32293517/3327081forfiles
.J'ai changé la réponse avec le fichier batch de vMax afin qu'il fonctionne aussi avec la langue néerlandaise.
Les Pays - Bas - persistante que nous sommes - ont quelques changements dans la
%date%
,date/t
etdate
que la rupture du lot fichier d' origine.Ce serait bien si certaines personnes pouvaient également vérifier cela par rapport à d'autres paramètres régionaux Windows et faire rapport des résultats.
Si le fichier de commandes échoue à votre emplacement, veuillez inclure la sortie de ces deux instructions à l'invite de commande:
echo:^|date
date/t
Voici un exemple de la sortie que vous devriez obtenir du fichier batch:
Voici le code révisé avec des commentaires sur pourquoi:
--jeroen
la source
jj-mm-aaaa
pour jour, mois, annee? Italiens peut-êtregg/mm/aaaa
pour giorno, mese, anno? Allemandstt.mm.jjjj
pour Tag, Monat, Jahr? Mais ensuite: je suppose que dans la plupart des pays, seules quelques langues sont utilisées. Comme aux Pays-Bas, Windows sera souvent en anglais ou en néerlandais, pas grand-chose d'autre. Suffisant pour moi.jj
, et n'impose pas une année à 4 chiffres), mais utiliseshift
pour ignorer le jour commeMon
ouma
. Juste différent.(TT-MM-JJ)
, ladate/t
sortie est23.06.2012
. / cc @Arjanreg query "HKCU\Control Panel\International" /vShortDate
. Méfiez-vous pendant les tests: pour une invite de commande ouverte, la modification de ce paramètre du Panneau de configuration modifie également le format utilisé pour afficher la date (pour les deuxdate
etdate /t
etecho %date%
), mais sous Windows 7 ne modifie PAS le format de la nouvelle date! Comme changer mon court format de date enYY/MM/dd
, me reçoit:The current date is: 12/06/23 Enter the new date: (mm-dd-yy)
. L'ouverture d'une nouvelle invite de commande corrige cela.reg query "HKCU\Control Panel\International" /v sShortDate
.Voici ce que j'ai utilisé:
Si vous souhaitez d'autres idées pour automatiser les sauvegardes dans les archives 7-Zip, j'ai un projet gratuit / ouvert que vous pouvez utiliser ou consulter pour des idées: http://wittman.org/ziparcy/
la source
J'avais un problème similaire. J'ai un téléchargement quotidien automatique à partir d'un serveur FTP d'un fichier crypté. Je voulais décrypter le fichier en utilisant gpg, renommer le fichier à la date actuelle (format YYYYMMDD) et déposer le fichier décrypté dans un dossier pour le bon département.
J'ai parcouru plusieurs suggestions pour renommer le fichier en fonction de la date et je n'ai pas eu de chance jusqu'à ce que je tombe sur cette solution simple.
Cela a parfaitement fonctionné (c'est-à-dire que le nom du fichier est "2011-06-14.txt").
(La source)
la source
Une fonction basée sur
wmic
:Côté supérieur: indépendant de la région. Inconvénient: seuls les administrateurs système peuvent exécuter wmic.exe.
Usage:
Cela fait écho à une chaîne comme celle-ci:
Notez que les paramètres de fonction sont out-Parameters - c'est-à-dire que vous devez fournir des noms de variables au lieu de valeurs.
Tous les paramètres sont facultatifs, tout
call:Now Y M
comme un appel valide si vous souhaitez uniquement obtenir l'année et le mois.la source
http://sourceforge.net/projects/unxutils/files/
Recherchez à l'intérieur du fichier ZIP quelque chose appelé "Date.exe" et renommez-le "DateFormat.exe" (pour éviter les conflits).
Mettez-le dans votre dossier Windows system32.
Il a beaucoup d'options de "sortie de date".
Pour obtenir de l'aide, utilisez
DateFormat.exe --h
Je ne sais pas comment vous mettriez sa sortie dans une variable d'environnement ... en utilisant SET.
la source
Solution indépendante régionale générant le format de date ISO:
Ce qui pourrait encore être optimisé: D'autres processus peuvent devenir confus si vous utilisez le format de date dans la courte période pendant qu'il est modifié. Ainsi, l'analyse de la sortie en fonction de la chaîne de format existante pourrait être «plus sûre» - mais sera plus compliquée
la source
la source
Étant donné une localité connue, pour référence sous forme fonctionnelle. L'
ECHOTIMESTAMP
appel montre comment obtenir l'horodatage dans une variable (DTS
dans cet exemple.)Et enregistré dans un fichier, timestamp.bat, voici la sortie:
la source
(yy)yy年m月d日 hh:mm
- pas de zéros non significatifs. (aa) pourrait être ignoré car nous avons une année à 2 chiffres ou une année à 4 chiffres. Mais veuillez noter une chose: le format de la date et de l'heure peut être modifié par machine.systeminfo
l'interface CLI et faites-moi savoir ce que vous voyezSystem Locale
. Le programme prend du temps à s'exécuter, mais le résultat des paramètres régionaux pourrait peut-être être mis en cache et ensuite utilisé pour indexer un format d'horodatage.Avec Windows 7, ce code fonctionne pour moi:
la source
independent of the regional settings of the machine
Je note que l'o / p n'a pas demandé de solution indépendante de la région. Ma solution est cependant pour le Royaume-Uni.
Il s'agit de la solution la plus simple possible, une solution à 1 ligne, à utiliser dans un fichier batch:
la source
...particularly because of the regional settings issue with using date
. Btw. Votre solution est la même que les vingt autres réponses.echo %date:/=-%
Je sais qu'il existe déjà de nombreuses façons. Mais voici ma façon de le décomposer pour comprendre comment cela se fait. J'espère que cela sera utile pour quelqu'un qui aime la méthode étape par étape.
la source
independent of the regional settings of the machine