아시다시피, Batch에는 UNIX 시간을 제공하는 명령이 없습니다. 내가 찾을 수있는 가장 가까운 것은 %time%
이며 타임 스탬프 만 표시됩니다.배치 : UNIX 타임에 대한 타임 스탬프
UNIX 시간을 얻을 수있는 일괄 처리 명령이 있습니까?
아시다시피, Batch에는 UNIX 시간을 제공하는 명령이 없습니다. 내가 찾을 수있는 가장 가까운 것은 %time%
이며 타임 스탬프 만 표시됩니다.배치 : UNIX 타임에 대한 타임 스탬프
UNIX 시간을 얻을 수있는 일괄 처리 명령이 있습니까?
Richie Lawrence's batch library에는 멋진 스크립트가 모두 있습니다. 필요한 것은 DateToSec (GetDate 및 GetTime을 사용)입니다. 그 결과 GetUnixTime
에 전달 된 제 파라미터로 복귀한다
@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
, 즉 %UNIX_TIME%
:
여기 작은 WMI를 이용하는 간단한 스크립트이다. 예를 들어
:
1341791426 seconds have elapsed since 1970-01-01 00:00:00
는 희망이 도움이!
이것은 좋은 대답이지만 코드에서 버그를 발견 한 것 같습니다 . 1 년의 첫 2 개월 동안 결과는 2 년 후입니다. '4800 + z '를 가지고 있다면 4800-z가 필요하다고 생각합니다. Richie Lawrence의 원래 DateToSecs 코드를 참조하십시오. 시간이 있으면 수정 사항을 확인하고 게시물을 수정하십시오. – jimhark
@jimhark 네 말이 맞아. 수정 주셔서 감사! –
좋습니다. 감사. 내 사본에 또 다른 변경 사항을 만들었습니다. 그것은 정말로 버그는 아니지만 나는 당신과 그것을 나눌 것이라고 생각했습니다. 이 코드를 완전히 이해하려고 시도했습니다. '-2472633'을'-719469'로 바꾸면 4800을 더할 필요가 없다는 것을 알았습니다. 여기서는 필요없는 조정 만 취소합니다. 그래서'10000 % Year %%% 10000-z'와'Day-719469'로 끝나는 두 라인을 사용합니다. 큰 차이는 아니지만 지금은 719469가 무엇인지 설명하는 것이 더 쉽습니다. 1970 년 동안의 일 (days of days)은 신기원에 적응하는 데 사용되었습니다. – jimhark
UNIX 시간을 반환하기위한 배치 명령이 없습니다. 유일한 옵션은 UNIX 시간을 반환하는 배치 파일에서 실행할 수있는 프로그램을 작성하거나 Windows PowerShell을 사용할 수있는 것입니다.
가장 좋은 해결책은 freeestanding date.exe unix-port를 다운로드하는 것입니다.
MS Date 명령과 충돌하지 않도록 unixdate.exe로 이름을 바꾸는 것이 좋습니다.
는 here
예 (소문자에 도움을 주문해야한다) :
((PROMPT)):unixdate +%Y%M%d
20141704
((PROMPT)):unixdate +%Y%b%d
2014Sep04
'20141704'? '17' ?? 10 월 ??? – Stephan
무엇 UNIX 타임 스탬프를 반환하는 간단한 한 줄 긴 C 프로그램에 대한? 배치 스크립트에서 % errorlevel %에서 값을 검색 할 수 있습니다. 명령에 내 테스트를 묻는 메시지에서
#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
는 "getUtime라는 .bat 파일을 만듭니다.박쥐 ("[날짜 + % s '에
@echo off
echo WScript.Echo(new Date().getTime()); > %temp%\time.js
cscript //nologo %temp%\time.js
del %temp%\time.js
하고 명령의 창에 해당 무엇]이
"C:\>getUTime"
1430894237616
가능한 중복처럼 전화"http://stackoverflow.com/questions/11124572/ Windows에서 사용하는 명령과 동일 함) – dbenham
@dbenham 실제로 복제본을 사용하여 해결책을 간과했습니다. –
GNU date.exe (GnuWin32, MinGW, Cygwin에서) 파일을 다운로드하면 도움이 될 것입니다. –