まずはこちらをご覧ください。
「test1」フォルダ内に「ファイル作成1」「ファイル作成2」「ファイル削除」のバッチが存在しています。
今回は「複数のバッチを起動させるバッチ」を作成します。
ここで、「1つのバッチの中に複数の処理をさせればいいのでは?わざわざバッチを複数に分ける意味は?」という疑問が残ります。
確かに、1つのバッチで複数の処理をさせれば余分にバッチを作成する手間が省けることもあります。しかし、上の例で説明すると
1.「フォルダ作成1」のバッチは起動したい。
2.「フォルダ作成2」のバッチは起動したくない。
という状況の時、複数の処理をさせる1つのパッチしか作成していない場合、実行することにより、余分なファイルが作成され、管理が煩わしくなります。
そのような状況の時
「フォルダ作成1」「フォルダ作成2」「フォルダ作成1・2ともに起動するパッチ」を作成することにより
1.「フォルダ作成1」のバッチは起動したい。
2.「フォルダ作成2」のバッチは起動したくない。
という要件を「使用者の判断で起動させるか否か選択する」ことにより満たし、
「フォルダ作成1・2ともに起動するパッチ」を作成することにより、どちらも起動させることが
可能となります。
以上を踏まえてバッチを作成していきます。
まずは「呼び出される側」のバッチを作成していきます。
今回作成するバッチは、「指定のフォルダ配下に今日日付でフォルダを作成する」というものです。
①「test2」フォルダ内に「今日日付」(20190625)でフォルダを作成する。
@echo off
set base_dir=C:\Users\thiruma\Desktop\test2\
set today=%date:~0,4%%date:~5,2%%date:~8,2%
rem 「test2へ今日日付でフォルダを作成する」
mkdir %base_dir%%today%
:end
バッチファイル」名を「child1」とします。
②「test3」フォルダ内に「今日日付」(20190625)でフォルダを作成する。
@echo
set base_dir=C:\Users\thiruma\Desktop\test3\
set today=%date:~0,4%%date:~5,2%%date:~8,2%
rem 「test3へ今日日付でフォルダを作成する」
mkdir %base_dir%%today%
:end
バッチファイル名を「child2」とします。
これで、起動させたい2つのバッチが完成しました。
最後にこの二つを起動させるバッチを作成します。
@echo off
cd C:\Users\thiruma\Desktop\test1
start child1.bat
start child2.bat
:end
以上です。簡単ですね!
ちなみに、今回は「start」コマンドで作成しましたが、「call」コマンドでも作成することは可能です。違いとしては
■START
* 新しいプロセスとして開始
* 前のバッチが正常終了orエラー終了を画面で見てOK出してから次のバッチに行きたい場合や並列実行する場合はSTART
■CALL
* 同じプロセスで開始
* 確認無しで順次実行したい場合とかはこちら
と使い分けることが可能です。
では、実際にバッチを実行してみましょう。
・バッチ起動前
・バッチ起動後
どちらにもファイルが作成されたのが確認できました。
今回は「複数のバッチを起動するバッチ」と「あえてバッチを細かい単位で分ける必要性」について
紹介しました。
ご覧いただき、ありがとうございました。
■参考
https://jj-blues.com/cms/command-start/
http://persimummies.hatenablog.com/entry/2015/04/25/003142