記事検索

検索ワードを入力してください。
Sky Tech Blog
バッチファイルを​利用する

バッチファイルを​利用する

バッチファイルの活用方法について説明します。バッチファイルは単にコマンドラインを順に実行するだけではなく、ループ処理やサブルーチンを使うことができます。その使用方法を紹介します。

VBScriptの廃止スケジュールが、現実味を帯びてきました。
長らく作業向けにスクリプトを書いたりしてきましたので、いろいろと思いが込み上げてきます。
しかし、それよりも古くからあるバッチファイルについては、今のところ、廃止スケジュールについてはアナウンスされていません。
PowerShellスクリプトのように、特別な権限を与えなくても実行させることができますので、ちょっとした処理をしてもらうには、便利なツールではあります。
さて、単にコマンドラインを順に実行するだけしかできない、と思われがちなバッチファイルですが、実は以下のようなことができます。

(1) ループ処理が​使える

実はバッチファイルでもループ処理が使えるのです。
たとえば、絶対にファイルをコピーしてほしいから、10回ファイルコピーするとしましょう。
以下のように10回書いてもよいのですが、

copy c:\data\data.txt d:\data\data.txt
copy c:\data\data.txt d:\data\data.txt
copy c:\data\data.txt d:\data\data.txt
copy c:\data\data.txt d:\data\data.txt
copy c:\data\data.txt d:\data\data.txt
copy c:\data\data.txt d:\data\data.txt
copy c:\data\data.txt d:\data\data.txt
copy c:\data\data.txt d:\data\data.txt
copy c:\data\data.txt d:\data\data.txt
copy c:\data\data.txt d:\data\data.txt
set a=0

:loop

copy c:\data\data.txt d:\data\data.txt

if Not %a%==10 goto :loop

とすると、10回ループをバッチファイルでも実現できます。

(2) サブルーチンが​使える

関数チックな使い方をすることもできます。

call :label1 引数

exit

:label1
 echo %~1
:goto EOF 

筆者の作業でよくあるのは、同じ共有名にある同じファイルを複数のサーバーにコピーする場合です。
もちろん、

copy c:\data\settei.ini \\server01\share
copy c:\data\settei.ini \\server02\share
copy c:\data\settei.ini \\server03\share
copy c:\data\settei.ini \\server04\share
copy c:\data\settei.ini \\server05\share

みたいな書き方もできますが、こうすると、

  • もう一つコピーしたいファイルが増えた。
  • コピーするときに上書きしたい

というときに、編集箇所が多くて間違いのもとになります。

call :filecopy01 server01
call :filecopy01 server02
call :filecopy01 server03
call :filecopy01 server04
call :filecopy01 server05
# ↑ここまでは変更しなくてもよい

exit

:filecopy01

copy /y c:\data\settei.ini \\%1\share
# ↑ここだけ変更すればよい
goto :eof

と記載しておくと、ファイル名の間違いを発見したり、追加があったりしたときに変更箇所が少なくて済みます。
あまり複雑なものを即興で書いたりはしませんが、こういう、ちょっとした作業のときには便利です。

バッチファイルも、いつか消えゆくのでしょう。
でも、まだしばらくは頼ることがありそうです。


XFacebookLINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム