コマンドプロンプト

【コマンドプロンプト超入門】勤務表をバックアップする自作バッチツール(解説有)

バックアップをとる!それが現場のルールだ!

開発現場でバックアップを取ることは重要であり、現場エンジニアの基礎でもありマナーともいえるでしょう。

ただ、実践している人は少ない気がします。

バッチプログラム一本作るくらいの労力だとは思うけど、日々の業務に追われると

そんな時間もとれない。

とりたくない。

また、作り方も多種多様。

コマンドプロンプトだけども少し調べただけでcopy、xcopy、robocopyの3種類あるし、ツールであればpowershell、最近はPowerAutomateDesktopなんてもの出ている。

今回は超入門という事で、

バッチプログラムを実行するたびに勤務表の名前に日時をつけてコピーするバッチのサンプルを作ってみました。

またコマンドプロンプト入門者向けに少し解説もつけました。

バッチプログラム紹介

早速サンプルバッチプログラムの紹介です。

例えばコピー元:c:\moto

に格納されている勤務表.xlsxを

コピー先:c:\sakiにコピーし、

さらに勤務表20220702143245.xlsx

のようにバッチした実行した日時でコピーされる

バッチプログラムをサンプルを作ってみました。

ソースコードは以下の通りです。

勤務表コピーバッチプログラム


rem /* 今日の日付を取得(yyyymmdd) */
set nowdate=%date:~0,4%%date:~5,2%%date:~8,2%

rem /* 今日の時刻を取得(hhmmss) */
set time2=%time: =0%
set nowtime=%time2:~0,2%%time2:~3,2%%time2:~6,2%

rem /* コピー実行 */
copy  c:\moto\勤務表.xlsx c:\saki\勤務表_%nowdate%%nowtime%.xlsx

rem /* 一時停止 */
pause

ソースコードの解説

ソースコードの解説です。

COPYコマンド

実際コピーを実行しているのは10行目のCOPYコマンドです。

copy  c:\moto\勤務表.xlsx c:\saki\勤務表_%nowdate%%nowtime%.xlsx

構文は以下の通りです。

【構文】

COPY (コピー元) (コピー先)

のように指定します。

今回のサンプルバッチは

コピー元: C:\moto\勤務表.xlsx

コピー先: C:\saki\勤務表_%nowdate%%nowtime%.xlsx

となります。

※この箇所は自分の環境や、コピーしたいファイルに応じて変更してください。

また%%に囲まれているワードはコマンドプロンプトにおける変数だと思ってください。

この場合だと、nowdate、nowtimeは変数であり、

ソースコード3行目でnowdateに現在日時をセット

ソースコード6,7行目でnowtimeには現在時刻をセットしています。

現在日付の取得

コピー先のファイル名に現在日時を付与するために、

ソースコード3行目で現在日付を取得しています。

set nowdate=%date:~0,4%%date:~5,2%%date:~8,2%

コマンドプロンプトのきまりで

%date%

と指定すると

2022/07/02

のように現在日時が取得できます。

しかし、このままだと、スラッシュが入ってしまいます。

スラッシュをファイル名に入れることはできないので、あらかじめスラッシュを取り除くために文字編集処理をしているのが10行目です。

例えば

%date:~0,4%

と指定していすると

dateの頭0バイトから4桁、すなわち

2022

を切り取ることができます。

コマンドプロンプトでは

%変数:~n,m%

と指定すると対象の変数のn文字目からmも自分を切り取ってくれるのです。

現在時刻の取得

コピー先のファイル名に現在時刻を付与するために、

ソースコード6,7行目で現在時刻を取得しています。

set time2=%time: =0%
set nowtime=%time2:~0,2%%time2:~3,2%%time2:~6,2%

現在時刻の場合は

%time%と指定すると

15:10:44.54

のように現在時刻が取得できます。

しかし、現在時刻の場合、時間が1桁代だと空白ができてしまいます。

例えば午前2時34分21秒.66の場合、

『02:34:21.66』

とならずに

_2:34:21.66』

のように前の方に空白ができます。

空白をゼロに埋めているのが6行目のソースコードになります。

%変数:X=Y%

とすると、

変数の中にある、Xという文字をYに置換します。

今回の6行目の場合、

set time2=%time: =0%

time変数の中にある空白を0(ゼロ)に変換し、time2にセットする

という意味になります。

7行目は現在日時と同じような話ですので省略します。

プログラミング中級者への鍵

色々話してしまいましたが、

まずはサンプルソースコードをコピーして自分用にカスタマイズしていくと、

簡単に覚えられるし、自分の力になると思います。

言語を覚えるときなどもそうですが、

最初はサンプルコードそのまま使い、

その後は

  1. 少しずつソースコードの意味を覚える
  2. 改良する
  3. 実行する

を繰り返すと、自分の力になっていきます。

このような習慣が身につくと、プログラミング初級者から中級者への道が開けていくのではないかと思います。

広告




関連記事