コマンドプロンプト

コマンドプロンプトでできる日付計算の方法について解説

コマンドプロンプトで日付の計算をする方法を解説します。

現在の日付の取得、指定日数の加減、期間の算出など、システム管理や自動化に役立つ機能を具体例とともに説明します。

数式Δt=t2t1の考え方も取り入れ、実際のコマンド操作と合わせてわかりやすく紹介します。

基本のコマンドと日付表示方法

日付表示コマンドの種類

dateコマンドの使い方

Windowsの標準コマンドであるdateは、システムの日付情報を表示および変更するために利用できます。

単に日付を確認する場合、以下のように記述することで現在の日付を表示できます。

batch
@echo off
REM 現在の日付を表示する
date /T
output
2023/10/25

日時を手動で変更する際は、プロンプトに新しい日付を入力する必要があります。

操作には注意してください。

timeコマンドの使い方

timeコマンドはシステム時刻に関する情報を表示および設定するためのコマンドです。

現在の時刻を確認する場合は、以下のように実行します。

batch
@echo off
REM 現在の時刻を表示する
time /T
output
15:23

時刻の設定を変更する場合も、プロンプトに従って新しい時刻を入力する仕組みとなります。

日付フォーマットの確認と変更

表示形式のチェック方法

システムで設定されている日付フォーマットは、環境変数%date%により確認できます。

以下のコード例では、現在のフォーマットで日付がどのように表示されるかを確認できます。

batch
@echo off
REM システムで設定された日付フォーマットを確認
echo %date%
output
2023/10/25

表示形式はWindowsのロケール設定などに依存するため、環境によって異なる場合があります。

フォーマット変更の手順

バッチスクリプト内で日付の表示フォーマットを変更するには、文字列操作を利用して所望の形式に整形することが可能です。

たとえば、MM/DD/YYYY形式の日付をYYYYMMDD形式に変更する例を以下に示します。

batch
@echo off
REM 現在の日付をYYYYMMDD形式に整形する例
REM ※この例は日付がMM/DD/YYYY形式の場合の文字列操作です
for /f "tokens=1-3 delims=/" %%a in ("%date%") do (
   REM %%a: MM, %%b: DD, %%c: YYYY
   set formattedDate=%%c%%a%%b
)
echo 整形された日付: %formattedDate%
output
整形された日付: 20231025

環境によっては日付の区切り文字や並び順が異なるため、適宜調整してください。

日付計算の基本

算術演算の基礎

基本的な四則演算

Windowsのバッチスクリプトでは、set /aコマンドを利用して算術演算を実行できます。

以下の例では、2つの数値に対して加算、減算、乗算、除算を行う方法を示します。

batch
@echo off
REM 2つの数値の加算、減算、乗算、除算の例
set num1=10
set num2=3
set /a sum=num1+num2
echo 加算: %sum%
set /a diff=num1-num2
echo 減算: %diff%
set /a product=num1*num2
echo 乗算: %product%
set /a quotient=num1/num2
echo 除算: %quotient%
output
加算: 13
減算: 7
乗算: 30
除算: 3

日数計算の数学表現:(\Delta t=t_2-t_1)

日付差の計算は、2つの日付(t_2-t_1)という形で表現されます。

バッチ単体では直接計算するのは難しいため、PowerShellを呼び出す方法があります。

以下の例では、2つの日付の差(日数)を計算しています。

batch
@echo off
REM PowerShellを利用して、2つの日付の差分(日数)を計算する例
set startDate=2023-10-01
set endDate=2023-10-25
for /f %%a in ('powershell -NoProfile -Command "[datetime]::Parse('%endDate%') - [datetime]::Parse('%startDate%') | select -ExpandProperty Days"') do set dayDiff=%%a
echo 日数差: %dayDiff%
output
日数差: 24

変数を使った計算処理

変数定義と値の操作

バッチスクリプトでは、setset /aを用いて変数を定義し、計算した結果を他の処理へ反映させることができます。

以下はシンプルな計算例です。

batch
@echo off
REM 変数の定義と計算への利用例
set value1=100
set value2=20
set /a result=value1-value2
echo 計算結果: %result%
output
計算結果: 80

簡単な計算式の実装例

複数の変数を組み合わせた計算式の実装例です。

ここでは、足し算の結果に掛け算を行う例を示します。

batch
@echo off
REM 複雑な計算例: (value1 + value2) * factor の計算
set value1=50
set value2=30
set factor=2
set /a result=(value1+value2)*factor
echo 結果: %result%
output
結果: 160

バッチスクリプトによる日付計算の実装

バッチスクリプトの基本構文

変数の代入と評価

バッチスクリプトでは、setコマンドを利用して変数に値を代入します。

変数の内容は%変数名%で参照可能です。

下記の例では、日付のサンプルを変数に保持して表示しています。

batch
@echo off
REM 変数の代入例とその評価
set dateExample=2023-10-25
echo 現在の日付(例): %dateExample%
output
現在の日付(例): 2023-10-25

FOR文による処理の組み立て

for文を利用することにより、リストの各要素に対して繰り返し処理を実行できます。

以下の例では、1から5までの数字を2倍して表示しています。

batch
@echo off
REM FOR文を利用して数字のリストを処理する例
setlocal enabledelayedexpansion
for %%i in (1 2 3 4 5) do (
  REM 数値を2倍して表示
  set /a doubled=%%i*2
  echo %%i2倍すると !doubled!
)
output
1 を2倍すると 2
2 を2倍すると 4
3 を2倍すると 6
4 を2倍すると 8
5 を2倍すると 10

日付の加減算実例

日付加算の手順

日付計算で加算処理を行う場合、PowerShellと連携するのが実用的です。

以下の例では、基準となる日付に指定日数を加算しています。

batch
@echo off
REM PowerShellを利用して日付加算を行う例
set baseDate=2023-10-25
set addDays=5
for /f %%a in ('powershell -NoProfile -Command "[datetime]::Parse('%baseDate%').AddDays(%addDays%) -f 'yyyy-MM-dd'"') do set newDate=%%a
echo 基準日: %baseDate%
echo 加算後の日付: %newDate%
output
基準日: 2023-10-25
加算後の日付: 2023-10-30

日付減算の手順

同様に、日付から指定日数を減算する例です。

AddDaysメソッドの引数に負の値を指定することで実現できます。

batch
@echo off
REM PowerShellを利用して日付減算を行う例
set baseDate=2023-10-25
set subDays=10
for /f %%a in ('powershell -NoProfile -Command "[datetime]::Parse('%baseDate%').AddDays(-%subDays%) -f 'yyyy-MM-dd'"') do set newDate=%%a
echo 基準日: %baseDate%
echo 減算後の日付: %newDate%
output
基準日: 2023-10-25
減算後の日付: 2023-10-15

応用例と実用的な活用方法

条件分岐を利用した処理

if文による期間判定

PowerShellと連携して取得した日付の差分を利用し、if文で条件判定を行う例です。

ここでは、2つの日付の差が20日以上か否かを判定しています。

batch
@echo off
REM PowerShellで日付差の日数を取得後、if文で期間判定
set startDate=2023-10-01
set endDate=2023-10-25
for /f %%a in ('powershell -NoProfile -Command "[datetime]::Parse('%endDate%') - [datetime]::Parse('%startDate%') | select -ExpandProperty Days"') do set dayDiff=%%a
if %dayDiff% GEQ 20 (
  echo 期間は20日以上です。
) else (
  echo 期間は20日未満です。
)
output
期間は20日以上です。

日付のフォーマット変換処理

場合によっては、日付の文字列形式を別の形式へ変換する必要があります。

次の例では、元の日付がMM/DD/YYYY形式の場合に文字列操作でYYYYMMDD形式に変換しています。

batch
@echo off
REM 現在の日付をMM/DD/YYYY形式からYYYYMMDD形式に変換する例
set currentDate=%date%
REM 例: currentDate が "10/25/2023" の場合
set formattedDate=%currentDate:~6,4%%currentDate:~0,2%%currentDate:~3,2%
echo 元の日付: %currentDate%
echo 変換後の日付: %formattedDate%
output
元の日付: 10/25/2023
変換後の日付: 20231025

システムのロケール設定によっては文字数の位置が異なる場合があるため、適宜調整してください。

環境に合わせたカスタマイズ例

計算結果の出力方法

計算結果をコンソールへの表示だけでなく、ファイルに出力することで後から結果を確認できるようにする例です。

以下では、引き算の結果をresult.txtというファイルに保存しています。

batch
@echo off
REM 計算結果をファイルに出力する例
set value1=100
set value2=50
set /a result=value1-value2
echo %result% > result.txt
echo 結果は result.txt に保存されました。
output
結果は result.txt に保存されました。

他ツールとの連携方法

バッチスクリプトから他のツールを呼び出すことで、より柔軟な処理が可能となります。

ここでは、VBScriptと連携してメッセージボックスを表示する例を示します。

以下の例では、別ファイルshowMsg.vbsが必要です。

ファイル内には、MsgBox WScript.Arguments(0)という内容となっています。

batch
@echo off
REM 他ツール(VBScript)と連携してメッセージボックスを表示する例
set message=計算成功!
cscript //nologo showMsg.vbs "%message%"
output
[ダイアログボックスで "計算成功!" が表示される]

まとめ

この記事では、コマンドプロンプトを活用した基本コマンドによる日付の表示方法と、バッチスクリプトを利用した日付計算の処理方法について解説しました。

基本的なコマンドの使い方と変数を利用した算術演算、PowerShellとの連携による日付の加減算など、実用的な手法が理解できます。

ぜひ、これを機に自分の環境でバッチスクリプトを活用し、日付計算の自動化に挑戦してみてください。

関連記事

Back to top button
目次へ