10
votes

Existe-t-il un moyen d'obtenir le temps d'époque à l'aide d'une commande Windows?

Y a-t-il un moyen d'obtenir le temps d'époque à l'aide d'une commande Windows? Sinon, peut-on modifier les commandes et TIME TIME .

Par exemple, date dans Windows donne la date avec / etc. Je souhaite obtenir une sortie sans caractères spéciaux tels que /:


4 commentaires

Avec EPOCH TIME - Voulez-vous dire le nombre actuel de toutes les secondes depuis le 1er janvier 1970?


... ou depuis 1904-01-01 ou 100 ns d'intervalles depuis 1601-01-01 ou divers autres époques ;-) L'époque Unix est de loin le plus étrange, imho ;-)


@moorecats: Si ma réponse a fonctionné super pour vous, vous pouvez la remettre, puis la sélectionner comme réponse à votre question. Voici comment fonctionne Stackoverflow. Voir la FAQ - Stackoverflow.com/faq . Vous pouvez bien sûr sélectionner une autre réponse si vous pensez que c'est mieux adapté à votre question.


Êtes-vous sûr que c'est DOS que vous utilisez? N'est-ce pas la console de Windows?


6 Réponses :


0
votes

Pour obtenir le temps dans le format "yyyymmdd", essayez ceci: xxx

plus sur:

http://www.sprint.net.au/~terbut/usefulbox/msdoscmds.htm

Vous pouvez aussi le faire de cette façon: xxx


5 commentaires

Cela a fonctionné super. L'article était génial, merci de me pointer cela.


Je pense que cette version dépend des paramètres locaux pour l'affichage de la date. E.G., UK vs. US, etc.


Comment est cette époque? Cela ne devrait pas être la bonne réponse


@Jessechisholm est correct. C'est dépendant des paramètres régionaux. J'utilise la sortie de WMIC, comme dans: Robvanderwoude.com/files/sortdate5_xp.txt


Ou ajoutez l'option UTC à la commande de date date -u et quelle que soit la mise en forme de votre choix. (Oups, qu'une option Linux. Mon mauvais)



3
votes

de la ligne de commande essayez ceci xxx

N'oubliez pas de doubler les caractères% si dans le fichier de commandes xxx

J'ai cette sortie : xxx

[édité par le commentaire de Kurt Pfeifle sur les espaces dans l'expansion du temps]


7 commentaires

Et je reçois DateTime est: 2331 ;-)


@Preeet Sangha: Votre t peut contenir des blancs d'avance si l'heure est avant 10h00 h. Vous pouvez résoudre ce problème par définir t =% t: = 0 (qui substitue tous les blancs avec 0 ) ...


@johannes: Qu'est-ce que Date / T retourne sur votre système?


ISO 8601 bien sûr. C'était juste pour souligner qu'une telle approche est condamnée à l'échec dans l'affaire Général.


@Preeet Sangha: Je ne sais pas combien alors "crédit" doit éditer les réponses des autres personnes ... mais je ne l'ai certainement pas.


Je reçois: DateTime est le: 20181020.16


pour / f "jetons = 1,2,3 Delims = /" %% F in ('date / t') définissez d = %% h %% g %% f J'ai obtenu le Jour donc je change ce jetons = 2,3,4 dans jetons = 1,2,3



1
votes

Il n'y a pas de moyen fiable d'obtenir une date dans les fichiers de lot sans recourir à des outils externes ou à d'autres langues telles que VBScript.

de VBScript Vous pouvez accéder à la date et à l'heure actuelle avec la date et temps fonctions. FormatDateTime Vous obtiendrez un format de date / heure neutre de culture que vous pouvez ensuite analyser.

Vous pouvez obtenir un résultat frmo le VBScript en utilisant wscript.echo à partir du script et appelez-le comme du lot: xxx

alors la variable %% résultat% contient tout ce que la VBScript a eu la sortie Dans sa première ligne.


3 commentaires

Rössel: Pourquoi dites-vous que 'Il n'y a pas de moyen fiable d'obtenir une date dans les fichiers de lots' ? Dans quel sens sont date / t et heure / t ou echo.% Date% et echo.% Temps% Peu fiable? - (ils peuvent ne pas être faciles à traiter dans des fichiers par lots, mais comment sont-ils "peu fiables"?)


Rössel: Voulez-vous dire: Il n'y a pas de moyen fiable d'obtenir une date dans les fichiers de lots afin qu'ils travaillent de manière fiable sur différents locaux et horaires de Timezones ??


@pipitas: En effet, c'est ce que je dis. Ou en d'autres termes: vous pouvez obtenir une date / heure d'une amende pour lui donner un humain à lire, mais vous ne pouvez pas obtenir de manière fiable la date ou l'heure dans un format structuré pour le traiter davantage avec le fichier de lot. Il existe des solutions qui travaillent pour une plus grande variété de locaux mais qui échouent encore dans certains. Ainsi, je l'appelle peu fiable. Si je veux Wriet un programme et le distribuer à d'autres, je ne veux certainement pas que la région affecte sa fonction.



4
votes

Parmi mes propres recherches en ligne, je n'ai pas été en mesure de trouver un moyen de le faire via un fichier de commandes directement. Cependant, j'ai pu trouver cette solution qui a fonctionné pour moi:

en toepoch.vbs: xxx

puis appelé à partir de mon script de lots comme: xxx

qui définit la variable% EPOCH% avec l'horodatage UNIX actuel et j'ai pu l'utiliser car j'avais besoin.

espère que cela aide cela aide.


0 commentaires

2
votes

the Coreutils pour Windows Project, http://gnuwin32.sourceforge.net/packages/coretutils. HTM a une commande code> date code>, qui vous donne les mêmes options que sous Linux.

Téléchargez le logiciel et renommez date.exe code> à gnudate.exe code>, pour éviter un conflit avec la commande dons code>. Vous avez besoin des fichiers libintl-2.dll code> et libiconv-2.dll code> pour exécuter la commande. p>

Pour toutes les options disponibles Type: P>

rem set the variable s to the epoch seconds.
for /f "tokens=1 delims=" %%A in ('gnudate +%%s') do set s=%%A
rem use `%s%` for the time offset parameter of the ffmpeg drawtext filter.
ffmpeg -y -f lavfi -i testsrc=duration=15.3:size=cif:r=10 -vf "drawtext=fontfile=arial.ttf:text=%%{pts\\\:localtime\\\:%s%\\\:%%a %%d %%b %%Y %%H\\\\\\:%%M\\\\\\:%%S}:fontsize=10:x=w-text_w:y=h-lh:box=1" a.mp4

ffplay a.mp4


0 commentaires

9
votes

Utilisez cette commande pour afficher les numéros de secondes après EPOCH.

(commande cmd)

PowerShell -Command "(Nouveau-Timespan -Start (Get-Day" 01/01/1970 ") --end (Date d'obtention de la date)). TOTALECONDS"


2 commentaires

Cela ne renvoie pas une valeur entière dans la manière dont l'UNIX date + "% s" serait. Mais le point décimal et les chiffres après qu'il peut être coupé en casting à int32: PowerShell -Command "[INT32] (New-TimesPan -Start (Get-Day" 01/01/1970 ") -. ))). Totauxeconds "


Dans PowerShell / Pwsh, vous pouvez raccourcir cela à: [int32] (nouveau-time "1/1/1970"). Totauxeconds ou de cmd: PowerShell -Command "[INT32] (nouveau -Imepan "1/1/1970"). TotaleConds "