Dans un fichier batch, j'ai besoin d'extraire un mois, un jour, une année de la commande date. J'ai donc utilisé ce qui suit, qui analyse essentiellement la commande Date pour extraire ses sous-chaînes dans une variable:
set Day=%Date:~3,2%
set Mth=%Date:~0,2%
set Yr=%Date:~6,4%
Tout cela est parfait, mais si je déploie ce fichier de commandes sur une machine avec des paramètres régionaux / nationaux différents, il échoue car le mois, le jour et l'année sont à des emplacements différents.
Comment extraire le mois, le jour et l'année quel que soit le format de date?
windows-7
windows-xp
batch
date
AngryHacker
la source
la source
Réponses:
Source: http://ss64.com/nt/syntax-getdate.html
Méthode 2 (cmd unique)
GetDate.cmd
Méthode 1 (cmd + vb)
GetDate.cmd
getdate.vbs
la source
Set _second=00%%K
lors de l'extractionwmic
et remplissez-les avec des zéros non significatifs comme les autres.Windows XP et versions ultérieures
getDate.cmd
Production
la source
ECHO %year%-%month%-%day%
quel format est compatible ISO et système de fichiers (sans parler des tri automatiques par année-mois-jour). :-).Je sais que ce n'est pas exactement ce que vous avez demandé, mais j'utilise le port Windows de l'
date
application Linux à partir d'une commande dans le fichier de commandes, puis j'affecte le résultat à une variable.Je n'ai pas encore trouvé de moyen d'obtenir la date de manière fiable en utilisant uniquement des commandes batch.
la source
Utilisez ce fichier de commandes pour le format AAAA-MM-JJ. Il utilise l'outil d'instrumentation de fenêtre qui devrait être présent dans toutes les versions récentes de Windows pour obtenir une chaîne datetime indépendante des paramètres régionaux.
Enregistrez dans un fichier batch dans le chemin (par exemple) c: \ windows \ rdate.bat puis accédez avec un CALL RDATE.BAT pour définir la ou les variables. Alternativement, copiez le code dans votre fichier de commandes.
Ce format de date convient aux noms de fichiers et à la journalisation. Il trie correctement. La variable logtime ajoute une variable date + heure sous la forme AAAA-MM-JJ-HHMMSS pouvant être utilisée pour la journalisation de l'activité des fichiers de commandes avec une seconde précision.
Ajustez les formats de date (et d'heure) comme vous le souhaitez. REM les échos de l'écran en production. Les deux nombres dans chaque sélection de texte sont l'index de caractère de départ à base zéro et le nombre de caractères à copier, par exemple,% datetime: ~ 0,4% prend une sous-chaîne de 4 caractères commençant à la position 0.
la source
wmic os get localdatetime
Bien que vous ayez raison de dire que VS 2008 génère un fichier de commandes, vous pouvez exécuter à peu près n'importe quel programme de votre choix, y compris les scripts Powershell et d'autres programmes.
Éditer:
Voici quelques questions similaires:
/programming/1051845/visual-studio-2008-professional-build-process /programming/3049369/embed-application-compilation-time-stamp
À l'origine, j'allais le faire passer à SO. . .
la source
Avez-vous essayé d'utiliser
NET TIME \\%ComputerName%
au lieu deDATE
? Je pense que celaNET TIME
est censé fournir les données dans un format cohérent indépendamment des paramètres régionaux.la source
net time
toujours en sortie au format m / j / aaaa. @AngryHacker, avec quels paramètres cela n'a-t-il pas fonctionné pour vous?Grâce au post de Shekhar, cela fonctionne selon les besoins et sans remplissage du temps.
Sortie: LogFile-20151113-0901.txt
la source
Cela peut être quelque peu hors sujet, mais voici un fichier .bat que j'ai écrit pour mes propres sauvegardes planifiées et que j'appelle également à partir d'actions de post-construction dans Visual Studio. J'espère que certains le trouveront utile.
Enregistrez les éléments suivants dans un fichier .bat
la source
%date%
et%time%
, qui sont sensibles aux paramètres régionaux et ne peuvent pas vraiment être analysées de manière prévisible comme l'OP l'a demandé.