MS-DOSで昨日の日付を取得する方法 [データサイエンス、統計モデル]
こんなプログラムを作ってみた。
やりたいこと
【1日前~7日前の日付を取得したい。】
ただ、MS-DOS単体で実装するのは少々面倒くさい。
そこで、VBScriptとMS-DOSを組み合わせて取得することにした。
【STEP1】
日付取得.vbsを作成する。
下記をテキストで書いて、"日付取得.vbs"という名前で保存しておく。
'=====================================================================
'現在日付の1日前~7日前の年月日をテキストファイルに出力
'=====================================================================
Dim fso, f, f1, fc, s, Bef1W, Bef2W
Set fso = CreateObject("Scripting.FileSystemObject")
Bef1D = DateAdd("d",-1, date)
Bef2D = DateAdd("d",-2, date)
<< 省略 >>
Bef7D = DateAdd("d",-7, date)
Set MyFile= fso.CreateTextFile("Bef1DayYMD.txt", True)
MyFile.WriteLine(Bef1D)
MyFile.Close
Set MyFile= fso.CreateTextFile("Bef2DayYMD.txt", True)
MyFile.WriteLine(Bef2D)
MyFile.Close
<< 省略 >>
Set MyFile= fso.CreateTextFile("Bef7DayYMD.txt", True)
MyFile.WriteLine(Bef7D)
MyFile.Close
【STEP2】
MS-DOSバッチを作成する。
WScript オブジェクトは Windows Script Host のオブジェクト モデル階層のルート オブジェクトで、これを使って【STEP1】のvbsを呼び出します。
WINDOWS XPですと、下の様に書けば動くと思います。
'=====================================================================
'YYYY(年)、MM(月)、DD(日)を変数に格納
'=====================================================================
wscript.exe "%FIRST_PLACE%日付取得.vbs"
rem --【1D前日付】
for /f %%A in (Bef1DayYMD.txt) do set Bef1D_YMD=%%A
set APD1_YYYY=%Bef1D_YMD:~0,4%
set APD1_MM=%Bef1D_YMD:~5,2%
set APD1_DD=%Bef1D_YMD:~8,2%
rem --【2D前日付】
for /f %%A in (Bef2DayYMD.txt) do set Bef2D_YMD=%%A
set APD2_YYYY=%Bef2D_YMD:~0,4%
set APD2_MM=%Bef2D_YMD:~5,2%
set APD2_DD=%Bef2D_YMD:~8,2%
<< 省略 >>
rem --【7D前日付】
for /f %%A in (Bef7DayYMD.txt) do set Bef7D_YMD=%%A
set APD7_YYYY=%Bef7D_YMD:~0,4%
set APD7_MM=%Bef7D_YMD:~5,2%
set APD7_DD=%Bef7D_YMD:~8,2%
echo "%APD1_YYYY%%APD1_MM%%APD1_DD%"
echo "%APD2_YYYY%%APD2_MM%%APD2_DD%"
<< 省略 >>
echo "%APD7_YYYY%%APD7_MM%%APD7_DD%"
やりたいこと
【1日前~7日前の日付を取得したい。】
ただ、MS-DOS単体で実装するのは少々面倒くさい。
そこで、VBScriptとMS-DOSを組み合わせて取得することにした。
【STEP1】
日付取得.vbsを作成する。
下記をテキストで書いて、"日付取得.vbs"という名前で保存しておく。
'=====================================================================
'現在日付の1日前~7日前の年月日をテキストファイルに出力
'=====================================================================
Dim fso, f, f1, fc, s, Bef1W, Bef2W
Set fso = CreateObject("Scripting.FileSystemObject")
Bef1D = DateAdd("d",-1, date)
Bef2D = DateAdd("d",-2, date)
<< 省略 >>
Bef7D = DateAdd("d",-7, date)
Set MyFile= fso.CreateTextFile("Bef1DayYMD.txt", True)
MyFile.WriteLine(Bef1D)
MyFile.Close
Set MyFile= fso.CreateTextFile("Bef2DayYMD.txt", True)
MyFile.WriteLine(Bef2D)
MyFile.Close
<< 省略 >>
Set MyFile= fso.CreateTextFile("Bef7DayYMD.txt", True)
MyFile.WriteLine(Bef7D)
MyFile.Close
【STEP2】
MS-DOSバッチを作成する。
WScript オブジェクトは Windows Script Host のオブジェクト モデル階層のルート オブジェクトで、これを使って【STEP1】のvbsを呼び出します。
WINDOWS XPですと、下の様に書けば動くと思います。
'=====================================================================
'YYYY(年)、MM(月)、DD(日)を変数に格納
'=====================================================================
wscript.exe "%FIRST_PLACE%日付取得.vbs"
rem --【1D前日付】
for /f %%A in (Bef1DayYMD.txt) do set Bef1D_YMD=%%A
set APD1_YYYY=%Bef1D_YMD:~0,4%
set APD1_MM=%Bef1D_YMD:~5,2%
set APD1_DD=%Bef1D_YMD:~8,2%
rem --【2D前日付】
for /f %%A in (Bef2DayYMD.txt) do set Bef2D_YMD=%%A
set APD2_YYYY=%Bef2D_YMD:~0,4%
set APD2_MM=%Bef2D_YMD:~5,2%
set APD2_DD=%Bef2D_YMD:~8,2%
<< 省略 >>
rem --【7D前日付】
for /f %%A in (Bef7DayYMD.txt) do set Bef7D_YMD=%%A
set APD7_YYYY=%Bef7D_YMD:~0,4%
set APD7_MM=%Bef7D_YMD:~5,2%
set APD7_DD=%Bef7D_YMD:~8,2%
echo "%APD1_YYYY%%APD1_MM%%APD1_DD%"
echo "%APD2_YYYY%%APD2_MM%%APD2_DD%"
<< 省略 >>
echo "%APD7_YYYY%%APD7_MM%%APD7_DD%"