[Scripting] | |||||||||||||
WSHで名前付き引数と名前なし引数を扱う
|
|||||||||||||
|
解説 |
引数とは、コマンドやプログラムを呼び出すときに指定する入力値のことをいう。同義語として「パラメータ」という言葉を使用する場合もあるだろう。プログラム側では、引数として指定された値によって自身の挙動を切り替えたり、指定された値を利用して何かしらの演算を行ったりするというわけだ。
例えばコマンド・プロンプト上で利用可能なコマンドの代表的な例として、ファイル名やフォルダ名の一覧を表示するdirコマンドがある。もしもC:とD:ドライブの直下に存在するファイルのみを拡張子順にソートして出力したい場合には、次のように指定すればよい。
C:\>dir c:\ d:\ /A:-D /O:E |
ここで、「c:\」と「d:\」が名前なし引数、「/A:-D」と「/O:E」が名前付き引数だ。名前なし引数ではdirコマンドで出力したい対象のパスを指定し、「/A」パラメータは出力したいファイルの属性、「/O」パラメータはソート・キーをそれぞれ指定している(dirコマンドに関する詳細は、Windows TIPS「dirコマンドでファイル名の一覧を取得する」を参照いただきたい)。
WSH(Windows Script Host)でも、実行時にこれら名前付き引数と名前なし引数とを受け取る方法が提供されている。本TIPSでは、2種類のパラメータをWSHスクリプト上で利用する方法について紹介する。
操作方法 |
名前なし引数を利用する
WSHスクリプトに対して名前なし引数を渡すには2つの方法がある。1つは、上の解説のようにコマンド・プロンプトから指定する方法、もう1つはWSHスクリプトにファイル名やフォルダ名をドラッグ&ドロップする方法だ。後者の方法を用いた場合には、ドラッグ&ドロップされたファイルのパス名が名前なし引数としてWSHスクリプトに引き渡される。
このようにして引き渡された名前なし引数は、WshUnnamedオブジェクトを介して取得することができる。以下に名前なし引数を利用した例を示す。これは、任意のフォルダを指定することで、そのフォルダに含まれるファイルの一覧をoutput.txtに出力するというものである。
※ファイル echo.wsf |
- サンプル・ファイルのダウンロード
(注:サンプル・ファイルecho.wsfをダウンロードするには、上のリンクを右クリックしてecho.wsfというファイル名で保存する)
サンプルの詳細はコード内のコメントをご覧いただくとして、ここでは名前なし引数を取得している部分に注目してみよう(赤字の部分)。名前なし引数を取得するには、WScript.Arguments.Unnamedプロパティを介して、WshUnnamedオブジェクトを取得すればよい。WshUnnamedオブジェクトには、WSHスクリプトに対して渡された名前なし引数のセットが含まれており、Countプロパティで名前なし引数の数を、Itemプロパティでn番目の名前なし引数を、それぞれ取得することができる。
echo.wsfを実行するには、エクスプローラなどからecho.wsfに対して任意のフォルダ(複数指定可)をドラッグ&ドロップすればよい。フォルダに含まれるファイルがリストとしてoutput.txtに出力されれば成功だ。
名前付き引数を利用する
次に、WSHスクリプトで名前付き引数を受け取る方法について見てみよう。WSHで名前付き引数を管理するのはWshNamedオブジェクトの役割だ。以下に名前付き引数を利用した例を示す。これは、任意のファイルを指定された文字コードに変換するためのWSHスクリプトだ。kconv.wsfについては、Windows TIPS「ファイルの文字コードを変換する」でも紹介しているが、本稿では文字コードの指定を名前付き引数でユーザーが明示的に指定できるように変更している。
※ファイルkconv.wsf |
- サンプル・ファイルのダウンロード
(注:サンプル・ファイルkconv.wsfをダウンロードするには、上のリンクを右クリックしてkconv.wsfというファイル名で保存する)
サンプルの詳細は先ほどのWindows TIPS記事をご覧いただくとして、ここでは名前付き引数を取得している部分に注目してみよう(赤字の部分)。名前付き引数を取得するには、WScript.Arguments.Namedプロパティを介して、WshNamedオブジェクトを取得すればよい。WshNamedオブジェクトには、WSHスクリプトに対して渡された名前付き引数のセットが含まれており、Countプロパティで名前付き引数の数を、Itemプロパティで指定された名前の引数値を、それぞれ取得することができる。
kconv.wsfを実行するには、コマンド・プロンプトから以下のようなコマンドを入力する(本サンプルを利用するには、あらかじめBasp21コンポーネントをインストールしておく必要がある。インストール方法については、Windows TIPS「ファイルの文字コードを変換する」を参照のこと)。
C:\>kconv.wsf /folder:c:\sample /out:2 /in:1 |
それぞれの名前付き引数の意味は以下のとおりである。
引数名 | 概要 |
/folder | 文字コードを変換する対象となるフォルダ |
/out | 変換後の文字コード |
/in | 変換前の文字コード |
kconv.wsfで利用可能な引数 | |
/out、/inパラメータで指定可能な値については、Windows TIPS「ファイルの文字コードを変換する」を参照のこと。 |
実行した結果、「c:\sample」フォルダ内のファイルがShift_JISからEUC-JPに変換されていれば成功だ。
■
以上、名前なし引数と名前付き引数とをWSHスクリプトから操作する方法について見てきたが、構文的には「こういう場合には必ずこちらを使わなければならない」という規則はない。ただ、コード上での扱いやすさ、エンド・ユーザによる指定のしやすさを考慮すれば、両者はそれぞれの特性によって使い分けることが好ましい。名前付き引数と名前なし引数の使い分けについては、別稿の「Windows管理者のためのWindows Script Host入門 第4回」で詳説しているので、併せてご覧いただきたい。
この記事と関連性の高い別の記事
- WSHに渡された引数の妥当性を自動検証する(TIPS)
- ファイルの文字コードを変換する(TIPS)
- Windowsでファイルの拡張子をまとめて変更する(コマンドプロンプト編)(TIPS)
- WSHスクリプトでヘルプ・メッセージを表示する(TIPS)
- WSHスクリプトの仕様書を生成する(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|