Windowsでバッチを実行してみよう

# はじめに

この投稿は、業務効率化をするためにコマンドプロンプトやバッチファイルを作りたいけど
何から始めていいかわからない人向け、また自分や自分に相談しに来た人向けに
コマンドについて自分が学んだことををまとめる。

# 0.目次
1.コマンドプロンプトってなんだ
2.コマンドってなんだ
3.バッチ(ファイル)ってなんだ
4.空のバッチファイルを作ってみよう
5.空のバッチファイルのバッチ処理を書いてみよう。
6.バッチを使って面倒な作業を自動化しよう
7.いろんなコマンドを見てみよう
8.公式のドキュメントの見方


# 1.コマンドプロンプトってなんだ

普段、私たちがWindowsOSのPCを起動した場合、以下添付画像のような画面を触ることになると思います。
この画面は、GUI(Graphical User Interface)と言われており、画像や絵を扱い、操作するモードです。
よく皆さんが操作されるこんな画面ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1052724/fc69b209-b01c-41a4-bad9-23d075b7416c.png)

このUIはあくまでユーザ側が見やすいように設計されています。
アイコンが大きく、各所に配置され、直感的に操作が可能です。
しかし、コンピューターがアイコンに落とし込んで操作する必要がないので文字(character)での操作が可能です。
上記のように文字を扱ったコンピューター操作をCUI(Character User Interface)と呼称している。
下記がCUIの画面の一例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1052724/9bf1c978-63d5-28b0-879a-2e774599d37b.png)![image.png]

上記画像で起動しているコマンドプロンプトとはCUI操作を行う際に、使用するアプリになります。
Windows のスタートボタンから「Windows システムツール」を選択し、
プルダウン表示されるサブメニューの「コマンドプロンプト」をクリックすることで起動します。

# 2.コマンドってなんだ
コマンドとは前項で話した通り、文字でパソコンを制御・操作する方法です。
ゲームはコントロコーラーを操作することで動くのと同様に、パソコンはコマンドを実行することで動きます。
この記事を見ているということは、あまりコマンドで操作をされたことがないか、触りたてといったところだと思います。
コマンド操作がなぜ必要か、理由を知りたいでしょう。
選ばれる理由は、"便利"だからです。

例えば、あなたがデスクトップに"myfolder"に資料1.txt~資料10.txtまでの合計10ファイルを作成したいとします。
GUI操作を行う場合は大変です、右クリックで新規作成し、ファイル名を都度変更し、保存します。
これを合計10回繰り返すわけですから、コマンド入力をしたことがない方でもめんどくさいなーと思われると推察されます。
コマンドはファイル名を事前に準備すれば、同じコマンドを打つことで複数のファイルを数秒で作成することが可能です。

これをバッチで準備すれば、とても楽になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1052724/33d464f3-8bfe-cf7d-8682-e50e0419592e.png)


# 3.バッチ(ファイル)ってなんだ
拡張子が「.bat」のファイルをバッチもしくはバッチファイルと呼称します。
このファイルは、ダブルクリックや右クリックの"編集"で開くと中に書き込まれているコマンドを実行します。
内部には、２で説明したコマンドが記載されており、バッチファイルを開くとこのコマンドが勝手に動きます。
上から順番にコマンドを実行します。
定型作業をバッチファイルに登録することで同じ作業を繰り返し手で行う必要がなくなるので効率的です。
このバッチファイルは、コマンドプロンプトで実行可能な処理をあらかじめファイルとして残しておき
実行時に記載されたコマンドを呼び出し、実行します。

# 4.空のバッチファイルを作ってみよう

さて、この章ではまずバッチファイルを作ってみましょう。
バッチファイルは何も記述されていなければ開いても、何も起こりません。
まずはこの章でバッチファイルを作ります。

任意のフォルダまたはデスクトップで右クリックをしましょう。
新規作成からテキストファイルを作成します。
名前はなんでもいいですが、test.batにでもしましょうか。
名前を確定すれば、空のバッチファイルの完成です。
どうですか、簡単でしょう？


# 5.空のバッチファイルのバッチ処理を書いてみよう。

4で作成したtest.batにバッチ処理を加えてみましょう。
test.batを選択して右クリックで、編集を選択しましょう。
.batを編集する際に何を使うように設定しているかで違いはありますが、
大抵の場合はメモ帳で開くようになっていると思います。

さて、早速ですが、バッチ処理を書いていきましょう。
まずは、コマンド自体の利用可能か確認するためにコマンドプロンプトで実行してみましょう。
今回は、testフォルダを作るというコマンドをやってみましょう。

mkdir c:¥test

実行してみてください。
以下の画像のような出力になったでしょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1052724/6d367bdc-4118-4abd-bad6-d7f39923bde8.png)


ちなみに、コマンドを誤字して実行するとこういう画面になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1052724/ee5374ef-3d33-b4fb-414f-200c4fa184d8.png)


コマンドが無事実行できましたら、一旦エクスプローラーを開いて
アドレスバーにc:と打ち込みましょう。
今回のコマンドで作成されたtestフォルダが作成されているかを確認してみてください。

これでコマンドが実行可能なことを確認できたので、バッチファイルにこのコマンドを転記し、保存してください。
ちなみに、このバッチを今実行しても既にC:testが存在するので内容が重複している状態です。
バッチファイルで実行するために、C:testを一度削除しましょう。
削除は対象のフォルダを右クリックし、削除でもdelコマンドでもどちらでも大丈夫です。

さて、これでバッチファイルに記載したコマンドは実行可能です。
実行してみましょう。
バッチが実行後、コマンドプロンプトを終了するので一見すると何も起こってないように見えます。
しかし、実際には裏側でコマンドプロンプトが起動しており、バッチに書かれた処理が実行されています。
その証拠に先ほどのC:testが存在することを確認してください。

これがバッチファイルの作り方です。
ただし、今回のような単純かつ単体の処理だけではマウス操作で処理を行うのとそれほど変わらないので
大きくメリットとしては感じにくいでしょう。
そのため、次の項ではもう少し面倒な処理をバッチにしてみましょう。

# 6.バッチを使って面倒な作業を自動化しよう

5のバッチ処理だけでは、バッチファイルのメリットを感じることは難しいでしょう。
それは、あまりにも単純作業だったからです。
この章で行うバッチ処理は、先ほどよりも使える内容です。

■やりたいこと
①C:test配下に年/月/日のフォルダを一ヶ月分作成する
②フォルダの名称ルールはYYYYMMDD(例：20220423)とする

■準備するもの
①コマンド
②ファイル名

■進め方
同一のコマンドを使用し、連続するデータに対して何か作業したい時はExcelなどを併用してください。
今回、5章と同じフォルダを作成mkdirコマンドを使用します。

A1にmkdir と入力します(コマンドの後ろに半角スペースを入れておいて下さい。)
B1に20220501と入力し、Excelのオートフィル機能で連番の日付を入力します。
5月は31日まであるので、B31までオートフイルを作成し、20220531になるのを確認して下さい。
C1に$A$1&B1と入力します。
結果、mkdir C:¥test¥20220501が出力されることを確認します。
C1をオートフィル機能でC31まで同じ関数を適用し、mkdir C:¥test¥20220531の値であることを確認して下さい。
C1からC31までをコピーします。

C:testにmonthly_folfder_maker.batを作成します。
名称はあまり意味はないですが、バッチを作る際に4で作ったような何をするかわからない名前を
バッチファイルにつけることは運用上良くないので避けましょう。
"テキストのみ保持"の形式で貼り付けます。

　▼monthly_folfder_maker.bat
　　mkdir C:test¥20220501
　　.
　　.
　　.
　　mkdir C:test¥20220531

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1052724/cceee890-5498-64df-df65-8b84532c6da6.png)

さて、これを実行してみよう。
C:test配下に5/1~5/31のフォルダが出来上がりました。
慣れれば、バッチは簡単なので５分くらいで完了します。
この作業を手作業をやるのは大変です。
おそらく15分くらいはかかるのではないでしょうか。
このように定型作業を簡単にすることができ、他の端末で行いたくなった時にできるというメリットがバッチにはあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1052724/1ca77f56-f453-25af-1c7d-ea70738ca512.png)



7.いろんなコマンドを見てみよう

今回は例題として、mkdirコマンドを出しました。
しかし、他にも多種多様なコマンドあります。
この記事で全てを網羅してしまうと、かなりの長文になってしまうのでどういうコマンドがあるかを
ざっくりと紹介していきます。

cdコマンド　カレントディレクトリーを移動する
dirコマンド　カレントディレクトリのファイル一覧を取得する
treeコマンド　ディレクトリやファイルをツリー状に表示する
renコマンド　ファイルを変更するコマンド
copy　対象のファイルを指定のフォルダーにコピーします
del　対象のファイルを削除します
move　対象のファイルを指定のフォルダーに移動する

以下のQiitaの記事などで実際の使い方がわかりやすくまとめられています。
https://qiita.com/hiro-hiro/items/0c284bbd41c1c0ed2c4f

8.公式のドキュメントについて

Microsoft社サポート対象内のWindowsOSではWin32 コンソール コマンドが組み込まれています。
下記、公式ドキュメントで使えるコマンドが公開されています。
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/windows-commands