![]() |
|
|
基礎解説 チェック式 WSH入門 第11回 WScriptオブジェクトを利用する(2) 1.標準入出力と標準エラー出力 Microsoft MVPWindows Server - Admin Frameworks 牟田口 大介 2007/07/26 |
|
|
|
|
|
今回は、前回に引き続き、WScriptオブジェクトのメソッド・プロパティを紹介し、その使用法について述べていく。 標準入出力/標準エラー出力:StdIn、StdOut、StdErrプロパティまずは、標準入出力(「標準入力」と「標準出力」をまとめてこう呼ぶ)や標準エラー出力を表すオブジェクトを返すプロパティであるStdInプロパティ(標準入力)、StdOutプロパティ(標準出力)、StdErrプロパティ(標準エラー出力)を見ていこう。 最初に、標準入出力、標準エラー出力とは何かについて簡単に述べておこう。例としてコンソール・アプリケーションの代表例である、コマンド・プロンプトを取り上げる。本連載はWSH(Windows Script Host)/VBScriptの連載なのでコマンド・プロンプトの使い方については詳しく述べないが、標準入出力、標準エラー出力とはどういうものであるかを簡単に示しておく。次の画面を見ていただきたい。 |
![]() |
| コマンド・プロンプトで入力可能な状態 |
| キャレット(「_」記号。「カーソル」とも呼ばれる)が点滅表示し、キーボードから文字入力が可能であることを示している。このように、コンソール・アプリケーションにおける標準入力はキーボードである。 |
![]() |
| 標準入力であるキーボードから文字列を入力する |
| ECHOコマンドは、引数として指定した文字列を標準出力(コンソール)に表示させるコマンドである。ここでは「Choco Cornet」という文字列をECHOコマンドの引数に指定し、それを標準出力に表示させている。 |
![]() |
| 標準出力に文字列を出力する |
| [Enter]キーを押すと先ほど標準入力から入力した文字列が標準出力に出力されることが分かる。なお、標準エラー出力はエラー発生時にエラー内容がコンソールに出力されるもので、標準出力と基本的には同じである。 |
このように、標準入力と標準出力は、コンソール・アプリケーションにおいてはそれぞれキーボードとコンソール(画面)であることがお分かりいただけると思う。
このことから、標準入出力と標準エラー出力を示すStdIn、StdOut、StdErrプロパティも、キーボードとコンソールを扱うプロパティであることが推測できる。なお、コンソールを扱うということからも分かるように、これらのプロパティはcscript.exe(CUI版のWSH)でしか使用できない(GUI版のWSHであるwscript.exeで実行するとエラーが発生する)ということに注意が必要である。
これらのプロパティは、それぞれの意味を表す文字列のストリーム・オブジェクト(TextStreamオブジェクト)を返す。TextStreamオブジェクトは今後テキスト・ファイルを読み書きするときにも登場するのでここでは概説のみにとどめておくが、文字列ストリームに対してシーケンシャル・アクセス(データを先頭から順番に読み込む、あるいは書き込む)を行うためのオブジェクトである。このオブジェクトには大別すると文字列(String)型のデータを読み込む系統(Read系)のメソッドと書き込む系統(Write系)のメソッドがあり、それぞれStdInプロパティ、StdOutプロパティが返すTextStreamオブジェクトに対応する。
最も単純な例として、標準入力から1行の文字列を受け取って変数に代入し、その変数の値を標準出力に書き出すスクリプトを考えよう。
※ファイル:read_and_write_stdio.vbs |
このスクリプトの実行例は例えば次のようになる。なお、このスクリプトはcscript.exeで実行する。
![]() |
| スクリプトを実行した直後の状態 |
| 入力を受け付けるキャレット_が点滅表示している。 |
![]() |
| 文字列を入力する |
| 任意の文字列をキーボードから入力してみる。 |
![]() |
| 文字列を出力する |
| [Enter]キーを押すと、先ほど入力した文字列がそのまま出力される。 |
このように、入力した文字列をそのまま出力するスクリプトであることが分かる。このスクリプトの動きを順に追ってみよう。
まず、最初の部分でWScriptオブジェクトのStdInプロパティ(標準入力ストリーム・オブジェクト)およびStdOutプロパティ(標準出力ストリーム・オブジェクト)を参照し、オブジェクト変数に代入している。その後、標準入力ストリーム・オブジェクトに対してReadLineメソッドを実行して標準入力から1行文字列を読み込んでいる。このときユーザーは文字列を入力できる。[Enter]キーを押すと改行したことになるので、標準入力から1行読み込まれたことになりスクリプトは次の行に進む。読み込んだ文字列はstrFromStdIn変数に代入されているので、それを標準出力ストリーム・オブジェクトのWriteLineメソッドで書き込んでいる。その結果、コンソールにはstrFromStdIn変数の中身が表示されるわけである。最後にこれらのストリーム・オブジェクトのCloseメソッドを呼び出し、ストリームを閉じている。
これらのオブジェクトの使い道だが、まずStdInプロパティが返す標準入力ストリーム・オブジェクトはInputBox関数を使わずにユーザーに文字列を入力させたいときに便利である。また、引数に数値を与えてReadメソッドを使うと指定数の文字だけ取得することができる(例えばstrFromStdIn = objStdIn.Read(5)のようにする)。
StdOutプロパティが返す標準出力ストリーム・オブジェクトはコンソールにユーザーのための情報を表示させるときに便利である。WriteLineメソッドはWScript.Echoとしたときと同じ効果が得られるが、こちらはcscript.exe専用なので、あえてcscript.exeで実行を強制させたいときに使うとよいかもしれない(wscript.exeではStdOutプロパティを参照しようとするとエラーになる)。Writeメソッドを用いると改行を加えず文字列を表示するので、工夫すればプログレス・バー(進ちょく状況を表示するバー)のようなものを作成できる(後で問題として紹介する)。
また、ここでは詳説しないが、標準入出力を扱えるということは、ほかのコンソール・アプリケーションやファイル、デバイスと連携ができるということである。興味のある方は「リダイレクト」や「パイプ」などをキーワードに調べてみるとよいだろう。その際、デフォルトで標準出力に出力される、
Microsoft (R) Windows Script Host Version 5.6 |
という文字列は、cscript.exeに//NoLogoオプションを与えることで抑制できることを頭に入れておくとよいだろう。
| INDEX | ||
| [基礎解説]チェック式 WSH入門 | ||
| 第11回 WScriptオブジェクトを利用する(2) | ||
| 1.標準入出力と標準エラー出力 | ||
| 2.スクリプトの実行制御 | ||
| 3.COMオブジェクトの操作(1) | ||
| 4.COMオブジェクトの操作(2) | ||
| コラム:タイプ・ライブラリについて | ||
| 基礎解説 |
ホワイトペーパー(TechTargetジャパン)
- WindowsTIPS (2010/3/19)
− [シャットダウン]ボタンの設定を変更する
− WINSサーバをインストールする
− WINSサーバをnetshコマンドで管理する - Windows 7のファイアウォール機能 (2010/3/18)
Win 7のファイアウォールの概要解説。ルールセットを切り替えるプロファイル機能が強化され、ドメインでもVPNでも、適切なルールが自動選択される - 第212話 プリンタ用紙 (2010/3/16)
致命的なディスク・クラッシュが起きる確率は、クラッシュによってもたらされる被害の大きさに比例する… - WindowsTIPS (2010/3/12)
− 不要なアドオンを無効化してIE8の起動を高速化する
− IE8のソース表示エディタを変更する
− RRASのNATでポートマッピングを定義する
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |













