[Azure] WebApps의 웹 작업에서 시작한 배치 파일로 date를 취급하는 경우 mm/dd/yyyy 형식이 되므로 주의

타이틀이 거의 정보의 전부입니다만, 배치 파일내에서 현재 일시를 취득해, 그것을 인수로서 프로그램 실행하는 일이 있습니다.

전월 (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 웹 작업으로 실행하면 date 결과가 mm/dd/yyyy 형식이 되므로 정상적으로 시작되지 않습니다. 위의 실행 결과는 ...



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%

움직여 보니 이번에는 무사히 실행할 수 있었습니다.



WebApps는 응용 프로그램 설정에서 (WEBSITE_TIME_ZONE : Tokyo Standard TIme을 설정하여) 시간대를 변경할 수 있지만 날짜와 시간 형식은 현재 변경할 수없는 것 같습니다.



또한 이 기사 에서와 같이 지역 설정에 의존하지 않는 배치에 대한 수정은 wmic 명령이 WebApps 사용자 권한으로 실행할 수 없기 때문에 수정할 수 없습니다.
D:\home>wmic os get LocalDateTime
Access is denied.

가능하면 실행되는 프로그램에서 날짜 계산하도록 변경하는 것이 좋다고 생각합니다만, 기존의 배치를 Web 작업에 그대로 이전하고 싶은 경우는, date 의 처리에 주의할 필요가 있습니다.

좋은 웹페이지 즐겨찾기