Есть ли способ получить время эпохи с помощью команды Windows? - PullRequest
7 голосов
/ 11 августа 2010

Есть ли способ получить время эпохи с помощью команды Windows?Если нет, можно ли изменить вывод команд date и time?

Например, date в Windows дает дату с / и т. Д. Я хотел бы получить вывод, который не имеет специальных символов, таких каккак /:

Ответы [ 6 ]

4 голосов
/ 08 августа 2018

Используйте эту команду для отображения количества секунд после эпохи.

(команда Cmd)

powershell -command "(New-TimeSpan -Start (Get-Date "01/01/1970") -End (Get-Date)).TotalSeconds"

4 голосов
/ 12 января 2013

Благодаря моим собственным онлайн-исследованиям я не смог найти способ сделать это напрямую через командный файл.Тем не менее, я смог найти это решение, которое работало для меня:

В toEpoch.vbs:

WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now())

Затем вызывается из моего пакетного сценария так:

for /f "delims=" %%x in ('cscript /nologo toEpoch.vbs') do set epoch=%%x

Это установило переменную% epoch% с текущей меткой времени Unix, и я смог использовать ее так, как мне было нужно.

Надеюсь, это поможет.

2 голосов
/ 11 августа 2010

из командной строки попробуйте это

for /f "tokens=2,3,4 delims=/ " %f in ('date /t') do @echo %h%g%f

не забудьте удвоить% символов, если в пакетном файле

@echo off
setlocal
for /f "tokens=2,3,4 delims=/ " %%f in ('date /t') do set d=%%h%%g%%f
for /f "tokens=1,2 delims=: " %%f in ('time /t') do set t=%%f%%g
echo datetime is : %d%%t: =0%
endlocal

Я получил этот вывод:

c:\development>xx.bat
datetime is : 201008111108

[Отредактировано в соответствии с комментарием Курта Пфайля о пространствах во времени]

1 голос
/ 11 апреля 2016

В проекте CoreUtils для Windows http://gnuwin32.sourceforge.net/packages/coreutils.htm есть команда date, которая предоставляет те же параметры, что и в Linux.

Загрузите программное обеспечение и переименуйте date.exe в gnudate.exe, чтобы избежать конфликта с командой Dos date. Вам нужны файлы libintl-2.dll и libiconv-2.dll для запуска команды.

Для всех доступных опций введите:

gnudate --help 

Например, gnudate "+%a %e %b %Y %H:%M:%S" даст:

Sun 10 apr 2016 21:52:35

Команда gnudate +%s выдаст секунды с начала эпохи:

1460325461

Следующий пакетный файл Dos показывает использование gnudate. Вам нужно будет удвоить % в параметре gnudate +%s.

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

Этот пакетный файл был протестирован с Windows 8 на виртуальной машине под Linux.

Чтобы запустить его, вам нужно установить ffmpeg.
Вы можете скачать Static build с https://ffmpeg.zeranoe.com/builds/.

1 голос
/ 12 августа 2010

Нет надежного способа получения даты в пакетных файлах без использования внешних инструментов или других языков, таких как VBScript.

Из VBScript вы можете получить доступ к текущей дате и времени с помощью Date и Time функции.FormatDateTime даст вам независимый от культуры формат даты / времени, который вы сможете затем проанализировать.

Вы можете получить результат из VBScript, используя WScript.Echo из скрипта и вызывая его так изbatch:

for /f "delims=" %%x in ('cscript /nologo foo.vbs') do set result=%%x

Тогда переменная %result% содержит все, что VBScript имел в качестве вывода в своей первой строке.

0 голосов
/ 11 августа 2010

Чтобы узнать время в формате "ггггммдд", попробуйте следующее:

for /F "tokens=2-4 delims=/ " %i in ('date /t') do echo %k%i%j

Подробнее о:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...