13

私が知っている限りでは、BatchにはUNIX時間を与えるコマンドがありません。私が見つけることができる最も近いものは%time%、タイムスタンプのみを表示するです。

UNIX時間を取得できるコマンドまたはコマンドのセットがバッチにありますか?

4

6 に答える 6

20

これらの便利なスクリプトがすべて含まれているRichieLawrenceのバッチライブラリがあります。必要なのはDateToSecGetDateGetTimeを使用)です。

これは、少し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

それが役に立てば幸い!

于 2012-07-08T19:14:19.997 に答える
7

「getUtime.bat」という.batファイルを作成します

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

このように電話します

"C:\>getUTime"
1430894237616
于 2015-05-06T06:44:51.683 に答える
3

UNIXタイムスタンプを返す単純な1行の長い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
于 2014-12-26T16:00:15.460 に答える
0

UNIX時間を返すためのバッチコマンドはありません。唯一のオプションは、UNIX時間を返すバッチファイルから実行できるプログラムを作成するか、WindowsPowerShellを使用することです。

于 2012-07-08T17:21:59.677 に答える
0

最善の解決策は、独立したdate.exeunix-portをダウンロードすることです。

MS Dateコマンドとの競合を避けるために、名前をunixdate.exeに変更することをお勧めします。

ここから入手

  1. ダウンロードして解凍します。私の知る限り、すべてのユーティリティは「ポータブル」です。つまり、ユーティリティを動作させるためにインストールプログラムは必要ありません。使用したのはごくわずかです(rm.exeとdate.exe)。 また、すでに所有している他のシステムユーティリティと一致する可能性がある場合に備えて、exeの名前を変更できます。
  2. サブフォルダー(usr \ local \ wbin)で実際の実行可能ポートを検索します
  3. ヘルプ情報を取得するには、コマンドに続けて--helpを入力します(ヘルプは小文字で入力する必要があります)

例:

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

((PROMPT)):unixdate +%Y%b%d
2014Sep04
于 2014-09-04T08:32:52.903 に答える
0

外部スクリプト、ファイル、ライブラリなどを使用せずに、単一のバッチファイルでこれを行う非常に簡単な方法があります。

<!-- :
  for /f "tokens=* usebackq" %%a in (`start /b cscript //nologo "%~f0?.wsf"`) do (set timestamp=%%a)
  echo %timestamp%
  pause
  exit /b
-->

<job><script language="JavaScript">
  WScript.Echo(new Date().getTime());
</script></job>

それが機能する方法は、バッチスクリプトのコードとJSファイルのコードが同じ.cmdまたは.batファイルに含まれていることです。バッチコードをコメントアウトすることにより、cscriptにバッチファイルをスクリプトとして実行させることができます。:最初の行の後は、バッチがそれを無視してバッチコードを直接実行することを意味します。さあ、行きます!

于 2021-05-28T14:00:35.857 に答える