J'ai du mal à générer un horodatage dans un fichier de lots de Windows, car je reçois des formats de date différents sur différentes versions Windows.
Ma machine: P>
>echo %date% >11/17/2009
5 Réponses :
Malheureusement, cela ne peut pas être fait directement, vous devez donc recourir à des hacks comme Getdate.cmd em>. P>
Il y a beaucoup de VBScript et de petits outils de commande externes disponibles également, ce qui ne prendrait pas une dépendance à moins que vous n'utilisez déjà quelque chose de cette nature dans votre système global. P>
Personnellement, j'essayais de tourner autour de lui en utilisant PowerShell qui évitent parfaitement le problème complètement. P>
C'est une grande pensée, mais quelle sorte de code PowerShell ferait cela?
@ JIM2B in PS, vous pouvez obtenir un objet via [DateTime] :: utcnow, puis une fête à ce sujet (par exemple, il a une propriété de mois, etc.). Est-ce ce que tu veux dire?
Utilisez VBScript Si vous souhaitez obtenir des paramètres de date indépendants:
thedate = Now yr = Year(thedate) mth = Month(thedate) dy = Day(thedate) hr = Hour(thedate) min = Minute(thedate) sec = Second(thedate) WScript.Echo yr&mth&dy&hr&min&sec
Ceci est vraiment utile utilisé à l'intérieur du script par:> cscript date.vbs // nologo (où date.vbs contient le code que vous avez inclus)
Cela ne vient-il que de retourner la datetime locale? La question était de générer l'UTC DateTime - et est ce que je recherche.
Vous n'avez pas besoin de VBScript. Vous pouvez le faire avec quelque chose comme ceci: source p> p>
Cela ne suppose-t-il pas le format de la sortie de la variable de date?
Yup, cela suppose que le formatage de la date locale est d'un certain format.
Consultez DOFF.EXE . J'utilise beaucoup cela pour obtenir des horodatages pour nommer des fichiers journaux. De son site Web:
DOFF imprime une date et une heure formatées, avec un décalage de date facultatif, (E.G -1 Imprime la date d'hier, +1 Date de demain). Pour afficher toutes les options disponibles, exécutez "DOFF -H". J'utilise généralement cet utilitaire pour renommer des fichiers journaux de manière à inclure un horodatage (voir le troisième exemple ci-dessous). Ce code doit compiler sous UNIX / Linux, ainsi que DOS. P>
Exemples de commandes: P> blockQuote>
xxx pré> sans paramètres, la sortie est la date / heure actuelle du format suivant: yyyymmddhhmiss p> blockQuote>
xxx pré> Dans l'exemple ci-dessus, une spécification de format de date est donnée. P> blockQuote>
xxx pré> Le fichier de commandes exemplaire ci-dessus indique un moyen net pour renommer un fichier journal basé sur la date d'hier. La commande "for" s'exécute à DOFT pour imprimer la date d'hier (le paramètre "-1" spécifie hier), puis extrait chaque composant de la date dans les variables de fichiers Batch DOS. La commande "renommée" renomme "httpd-access.log" à "httpd-access- [date d'hier] .log" p> blockQuote>
Découvrez également Microsoft's Now.exe, disponible dans Outils de ressources de ressources Windows Server 2003 . Une mauvaise chose que j'ai découvert (la dure) à ce sujet est qu'elle définit le niveau d'erreur au nombre de caractères imprimés. P>
ressemble à ceci: p>
NOW : Display Message with Current Date and Time Usage : NOW [message to be printed with time-stamp] NOW displays the current time, followed by its command-line arguments. NOW is similar to the standard ECHO command, but with a time-stamp.
Comme je l'ai posté ici: Batch: horodatage à UNIX Time
Qu'en est-il du programme de long C simple 1 ligne retourner l'horodatage unix? Vous pouvez récupérer la valeur de% errorLel% en% dans le script de lots. P> dans mon test d'invite de commande, il a fonctionné: p> C:\Users\dabaran\Desktop\cs50\src\C>.\time || echo %errorlevel% && set mytstamp=%errorlevel%
1419609373
C:\Users\dabaran\Desktop\cs50\src\C>echo %mytstamp%
1419609373