Пакет: отметка времени для UNIX Time

Все, что я знаю, Batch не имеет команды, которая дает время UNIX. Самый близкий, который я могу найти, это %time%, который отображает только метку времени.

Есть ли команда или набор команд в Batch, с помощью которых вы можете получить время UNIX?

Ответ 1

Там библиотечная библиотека Richie Lawrence, в которой есть все эти превосходные удобные скрипты. Тот, который вам нужен, DateToSec (который использует GetDate и GetTime).

Здесь упрощенный script, который использует небольшую WMI:

@echo off
setlocal
call :GetUnixTime UNIX_TIME
echo %UNIX_TIME% seconds have elapsed since 1970-01-01 00:00:00
goto :EOF

:GetUnixTime
setlocal enableextensions
for /f %%x in ('wmic path win32_utctime get /format:list ^| findstr "="') do (
    set %%x)
set /a z=(14-100%Month%%%100)/12, y=10000%Year%%%10000-z
set /a ut=y*365+y/4-y/100+y/400+(153*(100%Month%%%100+12*z-3)+2)/5+Day-719469
set /a ut=ut*86400+100%Hour%%%100*3600+100%Minute%%%100*60+100%Second%%%100
endlocal & set "%1=%ut%" & goto :EOF

Результат будет возвращен в первый параметр, переданный в GetUnixTime, т.е. %UNIX_TIME%.
Например:

1341791426 seconds have elapsed since 1970-01-01 00:00:00

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

Ответ 2

создать файл .bat с именем "getUtime.bat"

@echo off
echo WScript.Echo(new Date().getTime()); > %temp%\time.js
cscript //nologo %temp%\time.js
del %temp%\time.js

и называйте это

"C:\>getUTime"
1430894237616

Ответ 3

Как насчет простой однострочной программы C с возвратом UNIX timestamp? Вы можете получить значение из% errorlevel% в пакетном script.

#include <stdio.h>
#include <time.h>

int main(void)
{
    return (int) time(NULL);
}

В моем тесте в командной строке он работал:

C:\Users\dabaran\Desktop\cs50\src\C>.\time || echo %errorlevel% && set mytstamp=%errorlevel%
1419609373

C:\Users\dabaran\Desktop\cs50\src\C>echo %mytstamp%
1419609373

Ответ 4

Нет команды пакетной обработки для возврата UNIX-времени. Ваши единственные варианты - написать программу, которую можно запустить из пакетного файла, который вернет время UNIX, или вы можете использовать Windows PowerShell.

Ответ 5

На сегодняшний день лучшим решением является загрузка бесплатного unix-порта date.exe.

Рекомендуем переименовать его в файл unixdate.exe, чтобы избежать конфликта с командой MS Date.

Получите его от здесь

  • скачать и распаковать. Насколько мне известно, все утилиты являются "переносимыми", то есть они не требуют какой-либо программы установки для их работы. Я использовал только несколько (rm.exe и date.exe). Также, вы можете переименовать exe в случае, если они могут соответствовать другим системным утилитам, которые у вас уже есть.
  • Найти фактические исполняемые порты в подпапке (usr\local\wbin)
  • Чтобы получить информацию HELP, введите следующую команду: --help (необходимо написать справки в нижнем регистре)

Пример:

((PROMPT)):unixdate +%Y%M%d
20141704

((PROMPT)):unixdate +%Y%b%d
2014Sep04