Comment puis-je obtenir le jour, le mois et l'année à partir d'un Windows cmd.exe script?
Comment puis-je obtenir le jour courant du mois et de l'année de l'intérieur d'un Windows cmd script? J'ai besoin d'obtenir chaque valeur dans une variable distincte.
- stackoverflow.com/questions/203090/...
- Je ne comprends pas comment c'est censé fonctionner. Si j'execute le script sur le lien et imprimer le résultat, il me donne juste Thu_08_12_2010_161902_52
Vous devez vous connecter pour publier un commentaire.
Une variante de script qui fonctionne paramètres régionaux de façon indépendante. Le mettre dans un fichier texte .cmd extension et de l'exécuter.
Les variables %dd%, %mm% et %aa% gardera le jour ("DD" format), le mois ("MM") et l'année ("AAAA" format) respectivement.
rr
stands pour l'année au lieu deyy
)Pour obtenir l'année, le mois et le jour, vous pouvez utiliser le
%date%
variable d'environnement et les:~
de l'opérateur.%date%
se développe en quelque chose comme Jeu 08/12/2010 et:~
vous permet de ramasser des caractères spécifiques d'une variable:Utilisation
%time%
de façon semblable à ce dont vous avez besoin à partir de l'heure actuelle.set /?
vous donnera plus d'informations sur l'utilisation des opérateurs spéciaux avec des variables.Le lot suivant de code renvoie les composants de la date actuelle dans un jeu de paramètres régionaux manière indépendante et magasins le jour, le mois et l'année dans les variables
CurrDay
,CurrMonth
etCurrYear
, respectivement:Il y a deux imbriqués
for /F
boucles pour contourner un problème avec lewmic
de commande, dont la sortie est au format unicode; à l'aide d'une seule boucle résultats supplémentaires dans transport-retour caractères qui les impacts de la bonne extension variable.Depuis le premier jour et le mois peut également être constitué d'un seul chiffre seulement, j'ai ajouté un zéro
0
dans la boucle de construire. Par la suite, les valeurs sont taillées pour toujours composé de deux chiffres.7 est en position de départ
2 nombre de chiffres à afficher
echo %Date%
sorties à la datedd/mm/yyyy
(comme12/05/2017
), le code ci-dessus fonctionne en cas de changement de%Date:~0,2%
,%Date:~3,2%
et%Date:~6,4%
. La réflexion sur la façon dont Windows a été conçu (ou pourrait être conçu), localité de l'indépendance semble quelque chose de difficile à réaliser avec un simple morceau de code. Ce n'est pas un problème pour Linux ou Unix en général, quoique...echo %time%
me renvoie ` 9:29:34,67 " (avec un espace), ne pourrait-elle pas être09
?LANGUE DE L'INDÉPENDANCE:
L'Andrei Coscodan solution est dépendant d'une langue, donc une façon d'essayer de le résoudre est de réserver toutes les balises pour chaque champ: année, mois et jour sur les langues cibles. Envisager Portugais et en anglais, d'après l'analyse final défini comme:
Recherchez le paramètre de l'année, j'ai utilisé les balises de l'anglais et du portugais, il a travaillé pour moi, au Brésil, où nous avons ces deux langues les plus courantes dans les installations de Windows. J'espère que cela fonctionnera aussi pour certaines langues avec origine latine comme le français, l'espagnol, et ainsi de suite.
Bien, le script intégral pourrait être:
J'espère que cela aide quelqu'un qui traitent de différentes langues.
La seule manière fiable que je connaisse est d'utiliser VBScript pour faire le gros du travail pour vous. Il n'existe pas de portable manière d'entrer la date actuelle dans un format utilisable avec un fichier batch seul. Le VBScript suivant fichier
et ce lot extrait de
devrait fonctionner, cependant.
Alors que vous pouvez obtenir la date actuelle dans un fichier de commandes avec soit
date /t
ou la%date%
pseudo-variable, à la fois de suivre les paramètres régionaux en cours dans ce qu'ils affichent. Ce qui signifie que vous obtenez la date potentiellement tout format et vous n'avez aucun moyen de l'analyse que.cscript
est la console interprète pour Windows Script Host. Il existe depuis Windows 98 dans l'installation par défaut de Windows (à l'exception peut-être de Server Core). Toutefois, si possible, j'ai tendance à éviter VBScript depuis le WSH peut être désactivé à l'aide de stratégies de groupe. Quelque chose qui ne peut être fait avec des fichiers batch. Mais dans ce cas précis, c'est juste douloureux avec pure lot.Cette variante fonctionne pour toutes les localisations:
Je pense que Andrei Coscodan réponse est le meilleur quand vous ne pouvez pas faire de nombreuses hypothèses. Mais parfois, avoir un one-liner est agréable si vous pouvez faire quelques hypothèses. Cette solution suppose que la "date \t' sera de retour l'un des deux formats. Sur WindowsXP 'date /t 'renvoie "11/23/2011", mais sur Windows7 il retourne "Mer 11/23/2011".
Grâce à Andrei Consodan réponse pour m'aider avec cette ligne de solution.
Extraire le Jour, le Mois et l'Année
Le plus voté de la fonction et de la accepté de une ne fonctionnent PAS de la locale de façon indépendante à partir de la DATE de commande est soumise à la localisation de trop. Par exemple (accepté): Dans l'anglais, vous avez AAAA pour l'année et en Hollande, il est JJJJ. Donc, c'est un no-go. Le script suivant prend les utilisateurs de la localisation de la base de registre, qui est indépendant des paramètres régionaux.
Extraire uniquement l'Année
Pour un script que j'ai écrit, je voulais seulement à l'extrait de l'année (indépendant des paramètres régionaux) alors je suis venu avec cette oneliner que je ne pouvais pas trouver une solution. Il utilise le 'DATE' var, plusieurs séparateurs et vérifie un certain nombre de plus de 31. Qui, alors, sera l'année en cours. Il est faible sur les ressources, contrairement à certaines autres solutions.
J'ai convertis à l'aide de Powershell appels à cette fin dans mes scripts. Il nécessite l'exécution de script de l'autorisation et est de loin l'option la plus lente. Cependant, il est également indépendant de la localisation, très facile à lire et à écrire, et c'est beaucoup plus faisable d'effectuer des ajustements à la date comme l'addition/soustraction ou d'obtenir le dernier jour du mois, etc.
Ici est de savoir comment obtenir le jour, le mois et l'année
Ou, ici, c'est la date d'hier au format aaaa-MM-jj
for /f %%i in ('"powershell (Get-Date).AddDays(-1).ToString(\"yyyy-MM-dd\")"') do set yesterday=%%i
Jour de la semaine
for /f %%d in ('"powershell (Get-Date).DayOfWeek"') do set DayOfWeek=%%d
Heure actuelle, plus de 15 minutes
for /f %%i in ('"powershell (Get-Date).AddMinutes(15).ToString(\"HH:mm\")"') do set time=%%i
Essayez de l'utiliser pour faire des boucles avec 2 séparateurs (égal + dot):
=.
:Résultats ligne de commande:
Pour fichier bat:
Vous pouvez utiliser simple variable syntaxe, voici un exemple:
Une autre option est le
for
commande, nouveau voici mon exemple: