Part1「コマンドプロンプト入門 」でコマンド環境に慣れてきたら,ぜひスクリプト言語による処理の自動化をマスターしましょう。複雑に組み合わせたコマンドによる処理や,日常的に必要になる定型的な処理を一つのスクリプトにまとめて実行できるスクリプト言語は,コマンド環境の魅力を何倍にも高めます。このPartでは,Windows XP/2000などですぐに利用できるスクリプト処理環境「Windows Script Host(WSH)」と,コマンドプロンプト/バッチ・ファイルに代わるコマンド/スクリプティング環境「Windows PowerShell」を使ったファイル操作,外部コマンドの実行,Excelの制御を解説します。(編集部)

Windows Script Host編

 「Windows Script Host(WSH)」は,Windows標準のスクリプト実行環境です。ここではコマンドの実行,ファイル操作,Excelの操作などをWSHで記述する方法を解説していきます。Windows XP/Vistaをお使いなら,なにもインストールしなくても使用できます。Windows 2000用はマイクロソフトのWebサイトからダウンロードできます*1。本記事で掲載するスクリプトは,Windows XP Service Pack 2上のWSH5.6とExcel 2003の組み合わせで動作を確認しています。

 WSHでは,JScriptとVBScriptという二つの言語でスクリプトを記述できます。この二つの言語でできることはほとんど同じです。Javaに慣れている人であればJScript,Visual Basic(VB)に慣れている人であればVBScriptといった具合に,好きなほうや慣れたほうを使用すればよいでしょう。この記事では,JScriptをメインとし,要所要所でVBScriptでの書き方を紹介していくことにします。

文字列出力のスクリプトを実行してみよう

 まずはプログラミング言語の基本中の基本である文字列の出力をWSHで実行してみましょう。JScriptではリスト1(a),VBScriptではリスト1(b)のようになります。いずれもWScriptオブジェクトのEchoメソッドを使用する点は同じです。実際にスクリプト・ファイルを作成し,実行してみましょう。ファイル名は,JScriptであれば拡張子.js,VBScriptであれば拡張子.vbsで保存してください。これらの拡張子を付ければ,それぞれに対応したスクリプト・エンジンが自動選択されます。

(a)JScriptで書いたHELLO WORLD
WScript.Echo("HELLO WORLD");

(b)VBScriptで書いたHELLO WORLD
WScript.Echo("HELLO WORLD")
リスト1●文字列「HELLO WORLD」を出力するスクリプト(HelloWorld.js,HelloWorld.vbs)

 以下では,C:\wshというディレクトリに,それぞれHelloWorld.js,HelloWorld.vbsというスクリプト・ファイルを作成したものとします。

 WSHスクリプトの実行には,性質の異なる二つのコマンド,cscriptとwscriptが用意されています。試しに,それぞれのコマンドでHELLO WORLDのスクリプトを実行してみましょう。コマンドプロンプトを起動し,それぞれ

cscript C:\wsh\HelloWorld.js
wscript C:\wsh\HelloWorld.js

のように実行します。結果は,cscriptを使った場合は図1,wscriptを使った場合は図2のようになります。全く違いますね。コマンドによって出力方法が異なるのは,WScript.Echoの仕様によるものです。cscriptとwscriptでは,標準入出力の有無などが異なります。主な特徴を表1にまとめました。

図1●cscriptでリスト1を実行した例
図1●cscriptでリスト1を実行した例
図2●wscriptでリスト1を実行した例
図2●wscriptでリスト1を実行した例
表1●cscriptとwscriptの主な違い
[画像のクリックで拡大表示]
表1●cscriptとwscriptの主な違い

 どちらを使うのがよいかはケース・バイ・ケースですが,バッチ・ファイルなどとの連携を考える場合にはcscriptを断然お勧めします。「終了コードを返却できる」,「スクリプトの実行が終了するまでコマンドが終了しない」というcscriptコマンドの特徴が,バッチ・ファイルとの連携に有用だからです。cscriptコマンドで唯一できない「ウィンドウなしでの実行」がどうしても必要な場合を除けば,cscriptコマンドを選択しておくとよいでしょう。