【Windows】日付・曜日・時刻をクリップボードにコピーするバッチスクリプト


いつもお世話になっております。
RfromL.comです。

今回は現在日付・曜日・時刻をクリップボードにコピーするバッチスクリプトについてです。

CONTENTS

1.概要
2.スクリプト
3.使用方法
4.ワンライナー
5.おわりに


1.概要

先日投稿した記事「【iPhone】現在の日付、時刻を入力する方法(入力変換と日付ショートカット)」の中で日時情報を取得するショートカットについて記載しました。

上記記事で日時情報を取得したかった目的は、icloudメモで日時情報を記載したかった為ですが、iPhoneからではなくパソコンからicloudメモを書く場合でも同様のことをする為、バッチスクリプトを作成しました。

今回紹介するバッチスクリプトで出力する日付情報は以下画像の書式で表示されます。

※2022年07月22日 月曜日 18時54分02秒の場合

作成するバッチスクリプトの内容としては、”data” コマンド、”time”コマンドで取得した日付、時刻情報をフォーマット変換し、クリップボードにコピーする処理となっています。


2.スクリプト

用意スクリプトファイルの内容は以下の通りです。

[TimeStamp.bat]

@echo off
@rem -----------------------------------------------
@rem - タイムスタンプ クリップボード出力処理
@rem -
@rem -   システム日時(曜日含む)を
@rem -   下記の形式でクリップボードに出力する
@rem -   YYYY.MM.DD aaa HH:mm:ss
@rem -
@rem -----------------------------------------------
@rem  システム時刻取得(HH=時,MI=分,SS=秒)
@rem -----------------------------------------------
@rem システム時刻取得(HH=時)
@rem ※HH部分(時間部分)の1文字目をチェックして
@rem   空白の場合は頭ゼロ埋めでセット
set HHCHK=%time:~0,1%

if "%HHCHK%"==" " (
  set HH=0%time:~1,1%
) else (
  set HH=%time:~0,2%
)

@rem システム時刻取得(MI=分,SS=秒)
set MI=%TIME:~3,2%
set SS=%TIME:~6,2%

@rem -----------------------------------------------
@rem  システム日付取得(YYYY=年,MM=月,DD=日,WK=曜日)
@rem -----------------------------------------------
set YYYY=%DATE:~0,4%
set MM=%DATE:~5,2%
set DD=%DATE:~8,2%
set WK=%DATE:~0,1%

@rem -----------------------------------------------
@rem  曜日判定
@rem -----------------------------------------------
if %WK%==7 set WDAY=土
if %WK%==6 set WDAY=金
if %WK%==5 set WDAY=木
if %WK%==4 set WDAY=水
if %WK%==3 set WDAY=火
if %WK%==2 set WDAY=月
if %WK%==1 set WDAY=日

@rem -----------------------------------------------
@rem  タイムスタンプ クリップボード出力
@rem -----------------------------------------------
set /p datetime="%YYYY%.%MM%.%DD% %WDAY% %HH%:%MI%:%SS%" <nul | clip

pause

@rem -----------------------------------------------
@rem  終了処理
@rem -----------------------------------------------
exit 0

補足
①コメント部分(”@rem” の行)は不要であれば削除してください。

②時刻HHの取得の際に少し処理がありますが、これは0時~9時の場合に先頭半角スペース埋めで出力されるため、半角スペースをゼロにして出力する処理です。
例)朝8時の場合、” 8″となってしまうのを “08”にしています。

③”pause” はスクリプトを今回の記事を書く際、実行時の画面を取るために一旦停止しているだけなので不要であれば削除してください。

④clip(クリップボード)への出力に”echo” ではなく、”set /p” + “<nul” を使っているのは、出力時に改行コードを付与させないためです。
改行コードが付与されても問題ない場合は、”echo” に変更しても良いです。

④変数「datatime」への移送元を”(ダブルクォーテーション)で囲っているのは、末尾に半角スペースが付与されないようにする為です。


3.使用方法

使用方法としては作成したバッチスクリプトをダブルクリックして実行するだけです。

①バッチスクリプトの配置
格納場所にはどこでも構いませんが、良く使う場合であればデスクトップ画面においておくとすぐに使えて便利です。


配置したらバッチスクリプトをダブルクリックして実行します。
コード中に “pause” が記載されているので、処理終了前に一旦停止します。
何かキーを押して処理を終了します。



②日時情報の貼り付け
バッチスクリプトが終了したら、使用したい箇所で「CTRL+V」で貼り付けます。
下記画像では、icloudメモで貼り付けを行った結果です。

使用方法については以上です。


4.ワンライナー

必要な情報が日付(YYYY.MM.DD)、時刻(HH:mm:ss)のみで曜日情報が不要であれば、ワンライナーで行うこともできます。
その場合のコード内容は以下となっています。

set /p datetime="%DATE:~0,4%.%DATE:~5,2%.%DATE:~8,2% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%" <nul | clip

コマンドプロンプト上で上記コードを実行するだけで日時情報が取得できます。



試しに先程のコードから”clip”へのリダイレクト部分(” | clip” 箇所)を削除して実行してみます。

すると上図の通り、プロンプト上に結果が表示されることで日時情報が取得できていることが確認できます。

【注意点】
このワンライナー実行版ではバッチスクリプト版にある時刻HH部分の頭ゼロ埋め処理がないので、例えば時間が朝8時などの一桁の場合、” 8″のように半角スペースをセットして2桁で出力されることに注意です。


5.おわりに

パソコンで日時情報(タイムスタンプ)を取得する方法としては、今回のようにわざわざバッチスクリプトを用意しなくても、Windows上のソフトを使用することで取得することもできます。

Excelであれば「=now()」関数、サクラエディタであればショートカットキーで実現できます。

ですが、ITの現場ではどんな作業環境になるか分からないのでWindowsの標準機能で実現できる方法も知っておくと何かと便利です。

また、今回紹介したコードで出力する日時情報のフォーマットが気に入らない場合は自身の好みに編集仕様を修正して使用してみてください。

以上です。
宜しくお願い致します。