Windows XP以降

Windows XP以降

バッチ ファイルでは、date コマンドから月、日、年を抽出する必要があります。そこで、次のコードを使用しました。これは基本的に Date コマンドを解析して、そのサブ文字列を変数に抽出します。

set Day=%Date:~3,2%
set Mth=%Date:~0,2%
set Yr=%Date:~6,4%

これはすべて素晴らしいのですが、このバッチ ファイルを地域/国設定が異なるマシンに展開すると、月、日、年が異なる場所にあるため失敗します。

日付の形式に関係なく、月、日、年を抽出するにはどうすればよいですか?

答え1

ソース: http://ss64.com/nt/syntax-getdate.html

方法 2 (単一コマンド)

取得日付.cmd

@Echo off
:: Check WMIC is available
WMIC.EXE Alias /? >NUL 2>&1 || GOTO s_error

:: Use WMIC to retrieve date and time
FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
   IF "%%~L"=="" goto s_done
      Set _yyyy=%%L
      Set _mm=00%%J
      Set _dd=00%%G
      Set _hour=00%%H
      SET _minute=00%%I
)
:s_done

:: Pad digits with leading zeros
      Set _mm=%_mm:~-2%
      Set _dd=%_dd:~-2%
      Set _hour=%_hour:~-2%
      Set _minute=%_minute:~-2%

:: Display the date/time in ISO 8601 format:
Set _isodate=%_yyyy%-%_mm%-%_dd% %_hour%:%_minute%
Echo %_isodate%
pause

ここに画像の説明を入力してください


方法 1 (cmd+vb)

取得日付.cmd

@Echo off
For /f %%G in ('cscript /nologo getdate.vbs') do set _dtm=%%G
Set _yyyy=%_dtm:~0,4%
Set _mm=%_dtm:~4,2%
Set _dd=%_dtm:~6,2%
Set _hh=%_dtm:~8,2%
Set _nn=%_dtm:~10,2%
Echo %_yyyy%-%_mm%-%_dd%T%_hh%:%_nn%

取得日付.vbs

Dim dt
dt=now
'output format: yyyymmddHHnn
wscript.echo ((year(dt)*100 + month(dt))*100 + day(dt))*10000 + hour(dt)*100 + minute(dt)

答え2

Windows XP以降

取得日付.cmd

@echo off
for /f "tokens=2 delims==" %%G in ('wmic os get localdatetime /value') do set datetime=%%G

set year=%datetime:~0,4%
set month=%datetime:~4,2%
set day=%datetime:~6,2%

echo %year%/%month%/%day%

出力

ここに画像の説明を入力してください

答え3

まさにご要望どおりではないことは承知していますが、dateバッチ ファイル内のコマンドから Linux アプリケーションの Windows ポートを使用し、その結果を変数に割り当てます。

バッチ コマンドのみを使用して日付を確実に取得する方法はまだ見つかっていません。

答え4

VS 2008 がバッチファイルを出力するというのは正しいのですが、Powershell スクリプトやその他のプログラムを含め、ほぼすべてのプログラムを実行できます。

編集:

類似の質問をいくつか紹介します。

https://stackoverflow.com/questions/1051845/visual-studio-2008-professional-build-process https://stackoverflow.com/questions/3049369/embed-application-compilation-time-stamp

もともと、これを SO に移行するつもりでした。

関連情報