**コマンドプロンプトで日付、時間を取得する (22)

 

Windows コマンドプロンプトで時間を取得したいケース (覚書)
下記のURLを参考にしています。
つれづれ日記

1.日時、時間、秒まで取得する

 

@echo off

rem 現在の日付を取得

set date_tmp=%date:/=%

set time_tmp=%time: =0%

set yyyy=%date_tmp:~0,4%

set yy=%date_tmp:~2,2%

set mm=%date_tmp:~4,2%

set dd=%date_tmp:~6,2%

set hh=%time_tmp:~0,2%

set mi=%time_tmp:~3,2%

set ss=%time_tmp:~6,2%

set sss=%time_tmp:~9,2%

set dday=%yyyy%%mm%%dd%_%hh%%mi%_%ss%%sss%

 

 

 

2.1か月前の年月を取得する

set YYYYMM=%DATE:~-10,4%%DATE:~-5,2%

set /a ONEMONTHAGO=YYYYMM-1

rem 変数ONEMONTHAGO で月が0月になるのを回避する

if %ONEMONTHAGO:~-2%==00 set /a ONEMONTHAGO+=12-100

if %ONEMONTHAGO:~-2% GTR 12 set /a ONEMONTHAGO+=12-100

 

3.1か月前の年月を取得する

set n=1

) else (

set n=%1

 

if "%2"=="" (

for /F "tokens=1" %%a in ('date /t') do set orgdate=%%a

) else (

set orgdate=%2

)

 

:年月日の分割

set yy=%orgdate:~0,4%

set mm=%orgdate:~5,2%

set dd=%orgdate:~8,2%

set count=0

 

:Repeat

 

:月日の数値化(8進数対策)

set /a mm=1%mm%-100

set /a dd=1%dd%-100

set /a dd=%dd%-1

 

if %dd% NEQ 0 goto end

 

:月跨り処理

set /a mm=%mm%-1

if %mm% EQU 0 set mm=12&&set /a yy=%yy%-1

 

set /a dd=%dd%+31

if "%mm%"=="2" set /a dd=%dd%-3

if "%mm%"=="4" set /a dd=%dd%-1

if "%mm%"=="6" set /a dd=%dd%-1

if "%mm%"=="9" set /a dd=%dd%-1

if "%mm%"=="11" set /a dd=%dd%-1

 

:閏年処理

:4で割り切れるか?

set /a u=%yy% %% 4

if not %u%==0 goto end

:100で割り切れて、400で割り切れないか?

set /a u=%yy% %% 400

set /a v=%yy% %% 100

if %v%==0 if not %u%==0 goto end

:2月か?

if %mm% EQU 2 set /a dd=%dd%+1

 

:END

set mm=0%mm%

set mm=%mm:~-2%

 

set dd=0%dd%

set dd=%dd:~-2%

set /a count=%count%+1

set DT=%yy%/%mm%/%dd%

 

IF %count% NEQ %n% goto Repeat

 

echo %n%日前は%DT%です。

 

 

 

4.Xか月前の年月を取得する

rem 2日前の場合

for /F %%i in ('powershell (Get-Date^).AddDays(-2^).ToString('yyyyMMdd'^)') do (

set dayago=%%i

)

echo %dayago%

 

 

5.ファイルのタイムスタンプを取得する

for /F %%i in ('powershell (Get-ItemProperty

test.txt^).LastWriteTime.ToString('yyyyMMdd_HHmm_ss'^)') do (

set file01A=%%i

)

 

 

6.日付から曜日取得

rem 日前の場合

for /F %%i in ('powershell (Get-Date (Get-Date^).AddDays(-0^).ToString('yyyy/MM/dd'^)^).DayOfWeek^') do (

set Week1=%%i

)

set whatday=%Week1:~0,3%

 

 

7.Xか月前の年月を取得する

 

for /F %%i in ('powershell (Get-Date (Get-Date^).AddDays(-0^).ToString('yyyy/MM/dd'^)^).DayOfWeek^') do (

set Week1=%%i

 

8-1.曜日を番号で取得

rem test 曜日取得

for /F %%i in ('powershell (Get-Date (Get-Date^).AddDays(-0^).ToString('yyyy/MM/dd'^)^).DayOfWeek^') do (

set Week1=%%i

) 

set whatday=%Week1:~0,3%

 

 

for /f "usebackq delims=" %%A in (`powershell.exe -Command "(Get-Date (Get-Date).AddDays(-0) ).DayOfWeek -as [int]"`) do set DAYOFWEEK1=%%A 

 

rem 変数確認

echo %DAYOFWEEK1% 

set DAYWEEK2=0%DAYOFWEEK1%_%WHATDAY% 

 

 

 

8-2.曜日を番号で取得

1

for /F %%i in ('powershell (Get-Date (Get-Date^).AddDays(-0^).ToString('yyyy/MM/dd'^)^).DayOfWeek^') do (

set Week1=%%i 

set whatday=%Week1:~0,3% 

 

for /f "usebackq delims=" %%A in (`powershell.exe -Command "(Get-Date (Get-Date).AddDays(-0) ).DayOfWeek -as [int]"`) do (

set DAYOFWEEK1=%%A

)

 

rem 変数確認 

echo %DAYOFWEEK1% 

 

set DAYWEEK2=0%DAYOFWEEK1%_%WHATDAY% 

 

 

 

rem vbs週番号 

if %whatday%==Sat set WDAY=07SAT

if %whatday%==Fri set WDAY=06FRI

if %whatday%==Thu set WDAY=05THU

if %whatday%==Wed set WDAY=04WED

if %whatday%==Tue set WDAY=03TUE

if %whatday%==Mon set WDAY=02MON

if %whatday%==Sun set WDAY=01SUN