バッチファイル処理の初歩

f:id:somegoro:20170609001832p:plain
先月から入っている仕事がついにリリースを迎えています。約一か月間、寝不足になりながらも頑張りました。


さて、そめごろうとしては久しぶりにシステム導入のフェーズになります。前職ではよく参加していたフェーズなのですが、現職ではアプリケーション開発をメインで実施していたのでシステム導入はなかなかありませんでした。


ということで、システムについての知識があやふやになってきているので円滑に業務を遂行するためのお勉強記事を書きます。今回はシステム導入の基本作業である「バッチファイル処理について」の記事を書きます。


拡張子は.batまたは.cmd

基本中の基本ですね。テキストにバッチ処理を書いたら拡張子は.batまたは.cmdで保存しましょう。私は基本的に.batで保存しますが、職場では.cmdで保存する人が多いです。文字数も同じですし、どちらもで構わないでしょう。

環境変数でPATHに追加

システムのプロパティにある環境変数でPATHに追加すると、コマンドプロンプトからファイル名指定だけで実行できるようになります。いわゆるパス通ってるからですね。この設定をしていないと常にフルパス指定しなければバッチファイルは実行できません。

help で説明を見よう

help set でsetについての説明を見ることが出来ます。
help if でifのかなり参考になる説明を見ることが出来ます。少し慣れてきて細かな仕様が知りたいときにはネットで検索するのもいいけど確実な情報はここを確認することで取得できます。


ちなみにhelpの説明を終了するにはEscキーを押下します。コマンドプロンプト自体を終了するにはhelpを終了させてからexitで出来ます。

ラベル定義

:label3 これでラベルを定義することが出来ます。ラベルとは関数のようなものです。バッチファイルには関数がありません。そして、

goto label3
または
call label3

でlabel3ラベルに移動することが出来ます。

バッチファイルから他のバッチファイルを呼び出す

バッチファイルは他のバッチファイルを呼び出すことも出来ます。それにはバッチファイル名を記載すればいいだけです。しかしこの方法ではバッチファイルを呼び出した後に戻ってこないでそのまま終了してしまいます。


なのでそうならないようにcallを使用して他のバッチファイルを呼び出します。callで呼ばれたバッチファイルはexit 0とすることで戻り値を返せます。この例では0を返しています。バッチ処理を終了させるならexit /b です。そして、if errorlevel 0 これで戻り値に0が返ってきたか確認できます。


基本はこんな感じでしょうか。以下によく使用するコマンドを羅列していきます。

start sample.bat

別プロセスを起動して実行する。プロセスたくさん作ってパフォーマンス試験するときなどに便利そうですね。

pause

続行するには何かキーを押してください . . .

echo Hello

Helloと出力します。おなじみのテストコマンドです。

echo off

これ以降はecho表示させない。必要な表示を見逃さないためには大事な処理です。

@

この行はecho表示させない。

@echo off

この行はecho表示させない。これ以降はecho表示させない。

echo.

改行する。

set arg=atai

スクリプト実行中のみに有効な環境変数を定義する。

echo %arg%

変数の中身を参照する。

rem または ::

コメントアウト

mkdir

ディレクトリを作成する。

xcopy

コピーする。

%0

このバッチファイルのパス

cls

画面をクリアする。

ping localhost -n 5 > nul

5秒待つ(バッチファイルにはsleepやwaitは存在しない!)



以上、「バッチファイル処理の初歩」でした。


今回ご紹介したものだけでもかなり便利なバッチファイルを作成することが出来ると思います。しかし、バッチファイルにはまだまだおもしろい機能がありますよ。追ってご紹介していきます。


それでは今回の記事はこの辺で。


[改訂新版]Windowsコマンドプロンプトポケットリファレンス

[改訂新版]Windowsコマンドプロンプトポケットリファレンス