[Azure] WebAppsのWebジョブから起動したバッチファイルでdateを扱う場合、mm/dd/yyyy形式になるので注意
タイトルがほぼ情報の全てですが、バッチファイル内で現在日時を取得し、それを引数としてプログラム実行することがあります。
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形式になるため、正常に起動しません。上記の実行結果は・・・
mm/dd/yyyy形式から日付を取得するため、バッチファイルを少し修正します。変更点は 3, 4行目(yyとmmの取得位置)です。
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%
動かしてみると、今度は無事実行できました。
WebAppsはアプリケーション設定で(WEBSITE_TIME_ZONE:Tokyo Standard TImeを設定することにより)タイムゾーンを変更できますが、日付と時刻の形式は今のところ変更できないようです。
また、こちらの記事 にあるような地域設定に依存しないバッチへの修正は、wmicコマンドがWebAppsのユーザ権限で実行できないため、修正することができませんでした。
D:\home>wmic os get LocalDateTime
Access is denied.
できれば実行されるプログラムの方で日付計算するよう変更した方がいいと思いますが、既存のバッチをWebジョブにそのまま移設したい場合は、dateの処理に注意する必要があります。
Author And Source
この問題について([Azure] WebAppsのWebジョブから起動したバッチファイルでdateを扱う場合、mm/dd/yyyy形式になるので注意), 我々は、より多くの情報をここで見つけました https://qiita.com/VA_nakatsu/items/b4ab0e9bfef1f0c7db33著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .