Shell.vbs

shell.vbsは、UNIXシェルを模倣したユーティリティ関数を提供します。

Member Summary

namedescription
shell_unprefix() プレフィックスを取り除いたライブラリ関数とサブプロシージャを提供します。
shell_env() 環境変数のコレクションを返します。
shell_setenv( name, value ) 環境変数を設定します。
shell_argv() スクリプトに対する引数を配列で取得します。
shell_quit( exit_code ) スクリプトを終了します。
shell_sleep( milliseconds ) 指定されたミリ秒数だけスリープします。
shell_echo( message ) 標準出力に文字列を出力します。
shell_print( stream, message ) 指定されたTextStreamに文字列を出力します。
shell_println( stream, message ) 指定されたTextStreamに文字列を出力します。
shell_perror( message ) 標準エラーに文字列を出力します。
shell_readline() 標準入力から1行読み取ります。
shell_cd( destination ) 現在のワーキングディレクトリを変更します。
shell_pwd() 現在のワーキングディレクトリを返します。
shell_system( command ) 指定されたコマンドを実行します。
shell_exec( command ) 指定されたコマンドを実行します。この関数は、shell_systemの非同期実行バージョンです。
shell_redirect( command, outstream, errstream ) 実行プロセス、または、指定されたコマンドの標準出力とエラーを出力先にリダイレクトします。
shell_kill( process ) 指定されたプロセスを強制終了させます。
shell_wait( ByVal processes ) 指定されたプロセスの終了を待機します。
shell_xargs( ary, stmt, opt ) 指定された配列またはコレクションの各要素毎に指定されたstmt引数(VBScriptステートメント)を実行します。
shell_ls( path ) 指定されたパス配下のフォルダーおよびファイルを返します。
shell_lsr( path ) 指定されたパス配下のフォルダーおよびファイルを返します。この関数はサブフォルダーも探索します。
shell_test( ByVal op, ByVal file ) ファイルのチェックを行います。
shell_touch( ByVal timestamp, ByVal file ) ファイルのタイムスタンプを更新します。
shell_cat( ByVal files, ByVal destination ) 入力ファイルを結合し、指定された出力先に書き込みます。
shell_tcat( ByVal files, ByVal destination ) 入力ファイルを結合し、指定された出力先に書き込みます。
shell_bcat( ByVal files, destination ) 指定されたファイルを結合し、ADODB.Streamに書き込みます。
shell_cp( source, destination ) 指定されたファイルをコピーします。
shell_mv( source, destination ) 指定されたファイルを移動します。
shell_mkdir( folder ) フォルダーを作成します。
shell_mkdirs( folder ) フォルダーを作成します。この関数は、不足している中間フォルダーも作成します。
shell_rmdir( folder, force ) 指定されたフォルダーを削除します。
shell_rm( source, force ) 指定されたファイルを削除します。
shell_pushd( destination ) 現在のワーキングディレクトリーをディレクトリースタックに積んだ後、指定されたディレクトリに変更します。
shell_popd() ディレクトリースタックに積まれた最後のディレクトリーを取り出して、現在のワーキングディレクトリーとして設定します。
shell_stdout() 標準出力へのTextStreamオブジェクトを返します。
shell_stderr() 標準エラーへのTextStreamオブジェクトを返します。
shell_stdin() 標準入力へのTextStreamオブジェクトを返します。

Member Details

Public Sub shell_unprefix()

プレフィックスを取り除いたライブラリ関数とサブプロシージャを提供します。
 
このプロシージャを利用すると、よりUnixシェルに近い感覚でスクリプトを記述することがが可能になります。
例えば、shell_cdからは、プレフィックスが取り除かれ、cdという名称のプロシージャが利用できます。
元の関数とサブプロシージャはそのまま利用できます。
 
example)
cd "c:\"
mkdir "test"
for each f in ls("./")
echo f.name
next
 

Public Function shell_env()

環境変数のコレクションを返します。
 
@return WScript.Environmentオブジェクト

Public Function shell_setenv( name, value )

環境変数を設定します。
 
@param name 環境変数の名前
@param value 環境変数の値
@return 環境変数の値

Public Function shell_argv()

スクリプトに対する引数を配列で取得します。
 
@return 引数の配列

Public Sub shell_quit( exit_code )

スクリプトを終了します。
 
@param exit_code 終了コード

Public Sub shell_sleep( milliseconds )

指定されたミリ秒数だけスリープします。
 
@param milliseconds ミリ秒

Public Sub shell_echo( message )

標準出力に文字列を出力します。
 
@param message 出力する文字列

Public Sub shell_print( stream, message )

指定されたTextStreamに文字列を出力します。
 
@param stream 出力先のTextStream
@param message 出力するメッセージ

Public Sub shell_println( stream, message )

指定されたTextStreamに文字列を出力します。
 
@param stream 出力先のTextStream
@param message 出力するメッセージ

Public Sub shell_perror( message )

標準エラーに文字列を出力します。
 
@param message 出力する文字列

Public Function shell_readline()

標準入力から1行読み取ります。
 
@return 読み取られた行の文字列。ストリームの終端の場合、Empty。

Public Function shell_cd( destination )

現在のワーキングディレクトリを変更します。
 
@param destination 変更先のディレクトリを表す文字列、または、Folderオブジェクト
@return 変更前のワーキングディレクトリのパスを表す文字列

Public Function shell_pwd()

現在のワーキングディレクトリを返します。
 
@return 現在のディレクトリパスを表す文字列

Public Function shell_system( command )

指定されたコマンドを実行します。
 
@return コマンドの終了コード

Public Function shell_exec( command )

指定されたコマンドを実行します。この関数は、shell_systemの非同期実行バージョンです。
 
@return 生成されたプロセスを表すWshExecオブジェクト

Public Function shell_redirect( command, outstream, errstream )

実行プロセス、または、指定されたコマンドの標準出力とエラーを出力先にリダイレクトします。
 
出力先には、TextStreamまたは、Nothingが指定可能です。
Nothingが指定された場合、内容は破棄されます。
 
@param command 実行コマンドの文字列、または、WshExecオブジェクト
@param outstream 標準出力をリダイレクトする先のTextStreamオブジェクト
@param errstream 標準エラーをリダイレクトする先のTextStreamオブジェクト
@return コマンドの終了コード

Public Sub shell_kill( process )

指定されたプロセスを強制終了させます。
 
@param process 強制終了させるWshExecオブジェクト

Public Function shell_wait( ByVal processes )

指定されたプロセスの終了を待機します。
 
@param processes WshExecオブジェクトまたは、その配列及びコレクション
@return プロセスの終了コードが格納されたDicrtionaryオブジェクト(キー:プロセスID)

Public Sub shell_xargs( ary, stmt, opt )

指定された配列またはコレクションの各要素毎に指定されたstmt引数(VBScriptステートメント)を実行します。
コレクションの各要素は、valueで参照することができます。
要素の中身がTextStreamオブジェクトであれば、xargsは更にTextStreamから行毎にstmtを適用します。
この時各行は、line変数として参照することができます。
注意: 読み終わったTextStreamはCloseされます。
 
opt引数は任意のパラメータを渡すことができます。この変数はステートメントの中で利用することができます。
 
examples)
shell_xargs shell_ls("./"), "shell_echo opt.Replace(value.name,""***"")", re
 
@param ary ステートメントを適用するCollectionまたは、配列
@param stmt 適用するVBScriptステートメント

Public Function shell_ls( path )

指定されたパス配下のフォルダーおよびファイルを返します。
 
@param path ディレクトリーパスを表す文字列又は、Folderオブジェクト
@return FileとFolderオブジェクトが格納された配列

Public Function shell_lsr( path )

指定されたパス配下のフォルダーおよびファイルを返します。この関数はサブフォルダーも探索します。
 
@param path ディレクトリーパスを表す文字列又は、Folderオブジェクト
@return FileとFolderオブジェクトが格納された配列

Public Function shell_test( ByVal op, ByVal file )

ファイルのチェックを行います。
 
この関数は、op引数の値にしたがって、file引数に指定されたファイルのテストを行い、一致していれば、Trueを返します。
 
-e ファイル又はフォルダーが存在すれば、True
-f ファイルが存在すれば、True
-d フォルダーが存在すれば、True
 
@param op テスト演算子
@param file テスト対象を表すファイル名
@return True又はFalseの評価結果

Public Function shell_touch( ByVal timestamp, ByVal file )

ファイルのタイムスタンプを更新します。
 
ファイルが見つからなければ、空のファイルが作成されます。
 
以下の例では、対象のファイルのタイムスタンプを現在時刻に設定します。
echo "timestamp is " & shell_touch(empty, "test.dat").DataLastModified
 
@param timestamp Date型タイムスタンプ
@param file 対象ファイルを表すファイル名又はFileオブジェクト
@return Fileオブジェクト

Public Function shell_cat( ByVal files, ByVal destination )

入力ファイルを結合し、指定された出力先に書き込みます。
 
入力ファイルには、ファイル名又はFileオブジェクトを、配列または単体で指定できます。
出力先には、出力先ファイル名を文字列で指定することができます。
指定されている場合、destinationをオープンし、入力ファイルの全ての行を書き込みます。
この動作は、shell_tcatの動作です。
出力先が指定されていない場合、shell_catは結合処理を行わず、各入力ファイルのTextStreamオブジェクトを配列で返して終了します。
このTextStream配列は、shell_xargsなどで利用できます。
 
以下の例では、カレントディレクトリーの全てのファイルを読み取り、正規表現パターンに一致する行を***にマスクして、標準出力に書き出します。

shell_xargs shell_cat(shell_ls("./"),nothing), "shell_echo re.Replace(line,""***"")", re

 
@param files 入力ファイルとする、ファイル名又はFileオブジェクトの配列
@return TextStreamの配列

Public Sub shell_tcat( ByVal files, ByVal destination )

入力ファイルを結合し、指定された出力先に書き込みます。
 
入力ファイルには、ファイル名又はFileオブジェクトを、配列または単体で指定できます。
結合されたファイルは、指定された出力先の現在のポジション以降に書き込まれます。
出力先には、ファイル名、又は、TextStreamが指定できます。
出力先の指定がファイル名である場合には、そのファイルの終端以降に書き込まれます。
 
以下の例では、カレントディレクトリーのファイルを全て結合し、merge.txtファイルに出力します。

shell_tcat shell_ls("./"), "merge.txt"

 
@param files 入力ファイルとする、ファイル名又はFileオブジェクトの配列
@param destination 出力先のファイル名、または、TextStreamオブジェクト

Public Sub shell_bcat( ByVal files, destination )

指定されたファイルを結合し、ADODB.Streamに書き込みます。
 
ADODB.StreamのTypeによって、テキスト又はバイナリ結合が切り替えられます。
 
以下の例では、split1.dmpと、split2.dmpがバイナリ結合されて、merge.dmpファイルに出力されます。

set out = createobject("ADODB.Stream")
out.open
out.type = 2
shell_bcat Array("split1.dmp","split2.dmp"), out
out.savetofile "merge.dmp"

 
@param files 入力ファイルとする、ファイル名又はFileオブジェクトの配列
@param destination 出力先のADODB.Streamオブジェクト

Public Sub shell_cp( source, destination )

指定されたファイルをコピーします。
 
コピー先に同名のファイル、または、フォルダーが存在する場合、上書きされます。
sourceに配列かFilesコレクションが指定された場合、格納されている要素を全てコピーします。
この場合、destinationはディレクトリーを示している必要があります。
 
@param source ファイルを示す文字列、Fileオブジェクト、Folderオブジェクト、または、それらの配列
@param destination ファイルまたはフォルダーを示す文字列、またはFolderオブジェクト

Public Sub shell_mv( source, destination )

指定されたファイルを移動します。
 
sourceに配列が指定された場合、格納されている要素を全て移動します。
この場合、destinationは、ディレクトリを示している必要があります。
 
@param source ファイルを示す文字列、Fileオブジェクト、Folderオブジェクト、または、それらの配列
@param destination ファイルまたはフォルダーを示す文字列、またはFolderオブジェクト

Public Function shell_mkdir( folder )

フォルダーを作成します。
 
フォルダーが既に存在している場合、この関数はエラー番号58の実行時エラーを発生させて終了します。
 
@param folder 作成するフォルダー名の文字列
@return 作成されたフォルダーのFolderオブジェクト

Public Function shell_mkdirs( folder )

フォルダーを作成します。この関数は、不足している中間フォルダーも作成します。
 
フォルダーが既に存在している場合、この関数はエラー番号58の実行時エラーを発生させて終了します。
 
@param folder 作成するフォルダー名の文字列
@return 指定されたフォルダーのFolderオブジェクト

Public Sub shell_rmdir( folder, force )

指定されたフォルダーを削除します。
 
@param folder 作成するフォルダー名の文字列
@param force 強制的に削除する場合、True、その他の場合False

Public Sub shell_rm( source, force )

指定されたファイルを削除します。
 
sourceに配列が指定された場合、格納されている要素を全て削除します。
 
@param source ファイルやフォルダーを示す文字列、Fileオブジェクト、Folderオブジェクト、または、それらの配列
@param force 強制的に削除する場合、True。その他の場合、False。

Public Function shell_pushd( destination )

現在のワーキングディレクトリーをディレクトリースタックに積んだ後、指定されたディレクトリに変更します。
 
@param destination 新しいディレクトリ
@return 変更前のカレントディレクトリ

Public Function shell_popd()

ディレクトリースタックに積まれた最後のディレクトリーを取り出して、現在のワーキングディレクトリーとして設定します。
 
@return 変更前のカレントディレクトリ

Public Function shell_stdout()

標準出力へのTextStreamオブジェクトを返します。
 
@return 標準入力へのTextStreamオブジェクト

Public Function shell_stderr()

標準エラーへのTextStreamオブジェクトを返します。
 
@return 標準エラーへのTextStreamオブジェクト

Public Function shell_stdin()

標準入力へのTextStreamオブジェクトを返します。
 
@return 標準入力へのTextStreamオブジェクト