LoginSignup
1
0

More than 5 years have passed since last update.

[Azure] WebAppsのWebジョブから起動したバッチファイルでdateを扱う場合、mm/dd/yyyy形式になるので注意

Last updated at Posted at 2018-04-11

タイトルがほぼ情報の全てですが、バッチファイル内で現在日時を取得し、それを引数としてプログラム実行することがあります。

前月(YYYYMM)を引数としてプログラム起動
rem ---現在年月の取得---
set dt=%date:~-10%
set yy=%dt:~0,4%
set mm=%dt:~5,2%

rem ---前月を計算---
set /a mm=%mm%-1
if %mm%==00 (
    set mm=12
    set /a yy=%yy%-1)

rem ---mmを0埋めして引数とする---
set mm=0%mm%
set mm=%mm:~-2%
set PREVIOUS_MONTH=%yy%%mm%

node myprocess.js %PREVIOUS_MONTH%

これをAzure WebAppsのWebジョブとして実行した場合、dateの結果がmm/dd/yyyy形式になるため、正常に起動しません。上記の実行結果は・・・

image.png

mm/dd/yyyy形式から日付を取得するため、バッチファイルを少し修正します。変更点は 3, 4行目(yyとmmの取得位置)です。

前月(YYYYMM)を引数としてプログラム起動(改)
rem ---現在年月の取得---
set dt=%date:~-10%
set yy=%dt:~6,10%
set mm=%dt:~0,2%

rem ---前月を計算---
set /a mm=%mm%-1
if %mm%==00 (
    set mm=12
    set /a yy=%yy%-1)

rem ---mmを0埋めして引数とする---
set mm=0%mm%
set mm=%mm:~-2%
set PREVIOUS_MONTH=%yy%%mm%

node myprocess.js %PREVIOUS_MONTH%

動かしてみると、今度は無事実行できました。

image.png

WebAppsはアプリケーション設定で(WEBSITE_TIME_ZONE:Tokyo Standard TImeを設定することにより)タイムゾーンを変更できますが、日付と時刻の形式は今のところ変更できないようです。

image.png

また、こちらの記事 にあるような地域設定に依存しないバッチへの修正は、wmicコマンドがWebAppsのユーザ権限で実行できないため、修正することができませんでした。

D:\home>wmic os get LocalDateTime
Access is denied.

できれば実行されるプログラムの方で日付計算するよう変更した方がいいと思いますが、既存のバッチをWebジョブにそのまま移設したい場合は、dateの処理に注意する必要があります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0