SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

GUIのダイアログを使ったエンドユーザ向け対話バッチの実現

usebackqを使ってコマンドの結果を変数へ格納する


  • このエントリーをはてなブックマークに追加

DOSのバッチから、VBScriptやCで作成した簡易なプログラムを呼び出して対話型の処理を行う方法を紹介します。これを利用すると、バッチ処理の途中でダイアログボックスを呼び出して目的のファイルを選択させる、といったエンドユーザに優しい易しい処理などを実現できます。

  • このエントリーをはてなブックマークに追加

はじめに

 「エンドユーザーのPCにバッチファイルを置き、クリックして実行してもらう」といった局面が、頻度としては少ないものの、たまにあります。

 そのような時によく使われるのはWSHHTAでしょう。特に、HTAの場合は、HTMLを使ってユーザーフレンドリーなGUIのアプリケーションを簡便に作成することができます。

 しかし、ここではあえてコマンドラインのバッチにこだわって話を進めてみたいと思います。

対象読者

 仕事でバッチファイルを作成したり修正したりする必要がある人。

必要な環境

 Windows 2000/Windows XPが対象です(Vistaは未検証)。

なぜバッチファイルを使うのか

 理由は単純で、筆者のように「バッチの方が書き慣れている人」の場合、同じ処理を書くにしても、工数を抑えることができるからです。

 NT以降のDOSのバッチであれば、IF分岐やFORループが使えますし、環境変数ERRORLEVELを使用して、ある程度は細かいエラーハンドリングも可能です。また、バッチを書き慣れている人であれば、これまでの蓄積で、再利用可能な小物バッチがそれなりに揃っているであろう、という点も理由の一つです。

 しかし、やはりそこはバッチファイルですから、お客様から「あの黒い窓はどうもなじみにくい」というご意見をいただくこともあります(色は簡単に変えられます)。

 特に、

set /p 変数名=

 などを使った「値の入力」などについては、見た目上、どうしても貧弱になってしまいます。

 また「ファイル選択」についても、プロンプトに直接ファイルをドラッグ&ドロップし、上記と同様の方法でフルパスを取得できますが、これなどもエンドユーザーにとっては、見慣れた[ファイルを選択]ダイアログの方がいい、と思われる部分のようです。

GUIのダイアログを使ったバッチができないか

 さて、ここからが本題です。

 せっかく作ったバッチのすべての内容をWSHやHTAに書き換えることなく、エンドユーザーが入力・選択する部分のインターフェイスのみ、OS標準の見慣れたダイアログにできないものでしょうか。

 ここで紹介する方法は、実際に筆者がエンドユーザー向けの対話型バッチとして作成したものを基にしています。

 使用するのは短いVBScriptと短いCで書いたコマンドラインのアプリ。コアな部分はバッチファイル内でまかなうという前提で、VBScriptとCのアプリはあくまでも補助的な意味合いです。

バッチのシナリオ

 シナリオは次のようなものであるとします。

  1. エンドユーザーがバッチファイルのショートカットをダブルクリック
  2.  
  3. メッセージボックスを表示して処理を行うか確認
  4. [はい]は処理継続。[いいえ]は処理終了。
    メッセージボックスを表示
    メッセージボックスを表示
  5. インプットボックスを表示して必要事項を入力
  6. 入力値があれば処理継続。未入力/キャンセルは処理終了。
    インプットボックスを表示
    インプットボックスを表示
  7. 処理対象となるファイルをコモンダイアログで選択
  8. 入力値があれば処理継続。キャンセルは処理終了。
    コモンダイアログを表示
    コモンダイアログを表示
  9. 結果の出力先となるディレクトリをコモンダイアログで選択
  10. 入力値があれば処理継続。キャンセルは処理終了。
    ディレクトリコモンダイアログを表示
    ディレクトリコモンダイアログを表示
  11. 必要な情報は揃ったはずなので、以下、XXX処理を行う
  12. 最後に終了メッセージを表示
  13. (ステータスのレベルによりダイアログのアイコンを変更)
    メッセージボックスを表示
    メッセージボックスを表示

GUIに関連する小物達

 小物として使うのは

  1. msgbox.vbs(メッセージボックス表示)
  2. inputbox.vbs(インプットボックス表示)
  3. commdlg.exe(ファイル選択ダイアログ表示)
  4. commdlgd.exe(ディレクトリ選択ダイアログ表示)

 VBScriptからファイル選択などのコモンダイアログを使うには、Visual Studioのライセンス(ランタイムのことではない)が必要なため、ここでは短いCで書いたコマンドラインのアプリを使います。

 本稿は『バッチからアプリケーションの結果を取得し処理を行う』のが目的ですので、VBScriptとCのプログラムの内容についての詳細は割愛します。添付のソースを参照してください(本当に簡単なものです)。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
GUIのダイアログを使う場合の肝について

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

こじま しょういち(コジマ ショウイチ)

会社員。Ukulele Time(たまさかに更新しています)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1129 2008/08/19 17:09

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング