2011年8月4日木曜日

バッチファイルのお気軽実行を防ぐ方法 - Windowsのコマンドプロンプト(bat,cmd)

Windowsコマンド。プログラム実行関連
○Windows XP
バッチファイルは通常、エクスプローラーのダブルクリックもしくはクリックから簡単実行する事が出来ます。でも、お気軽に実行されると困る場合はありませんか。
そのような時は、バッチファイル先頭での引数チェックが簡単です。うっかりミスの誤操作を防ぐ事が出来ます。

o サブプログラムを含めて1ファイルに収めたい時は、CALLコマンドのラベル付きとGOTOコマンドを使います。


**** 手順
o 実行されると困る側のバッチファイルの先頭で、引数(= パラメーター)のチェックを行います。
o そして、そのバッチファイルを実行する側では、引数を追加して呼び出します。


**** 実行例
o sub.bat
--------
@echo off
if "%~1"== "" exit 999
echo サブプログラムです。
--------

    + キーワードは大文字でも大丈夫です。
    + この例では、何か引数が指定されていた時に、正しい操作だとみなします。
    + 「%~1」は、1つ目の引数から「"」を除去したものです。
        + 詳しくは、「%変数の使い方
    + 単にスルーさせたい時は「exit 999」の代わりに「exit /b」辺り
    + @echo offを付けると、表示がすっきりします。(= 途中のコマンド文字列を表示しません。)

o main.bat
--------
@echo off
call sub.bat ミクさん
echo 戻ってきました。
--------



**** メモ
o この小技は、バッチファイル以外のプログラムに応用する事も出来ます。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼Windowsコマンド。プログラム実行関連▼ABC順
    ▼コマンドを実行する
    ▼コマンドプロンプト画面
    ▼制作メモ
    > ファイルやフォルダーのパスを書いて、エラーになる時の確認点
    バッチファイルで、空白(=スペース)付きの引数(= パラメーター)を扱う方法
    バッチファイルで、ファイルを普通に「開く」方法
(2011年8月5日変更。使用例の説明でgoto :eof から exit /bへ)