Shell(シェル).CommandLine


// CurrentDirectory の移動 sh.CurrentDirectory = "d:/"; print( sh.CurrentDirectory );



Exec


SYNTAX Exec( cmd ) // command line 文字列 DESC 外部 Application を SubProcess で実行する stdout を取得できるので, 連携できる
var sh = new ActiveXObject("WScript.Shell"); // Exec() は Block されない var oExec = sh.Exec("notepad"); // プロセス ID oExec.processID; // SubProcess が実行中は 0 がかえる while ( oExec.Status == 0 ) { WScript.echo( "wait" ); WScript.Sleep(100); } WARNING // サブプロセスが終了していないと 0 が常にかえる // 正しい値をとるには, 処理の終了をまつ // ExitCode は C での int main() の戻値 code = oExec.ExitCode;
var oExec = sh.Exec("notepad") // 3 sec まつ WScript.Sleep(3000); // 実行中の SubProcess を終了させる oExec.Terminate();
// stdout がすべて取得するまで まつことで終了まちもできる var s = oExec.StdOut.ReadAll(); var s = ""; while ( !oExec.StdOut.AtEndOfStream ) { // 1 byte 読む s += oExec.StdOut.Read(1); // 1 行よむ ( 引数はなし ) s += oExec.StdOut.ReadLine(); if ( s.indexOf("Press any key") != -1 ) break; }



Run


DESC 外部アプリケーションを SubProcess で実行する Window を最小化して実行できる stdout をとるには, Exec() を使うこと SYNTAX Run( cmdline // cmdline 文字列 [, modeWindow ] // Window の表示 mode [, isWait ] // SubProcess の終了をまつか ) RET ExitCode // 実行した Program の終了コード [.] Explorer [.] wscript.exe // Interpreter [.] notepad
var sh = new ActiveXObject("WScript.Shell"); // notepad を非表示で起動 // 処理は Block される sh.Run( "notepad", 0, true ); // cmdline を渡すため // 以下の記述でも OK sh.Run( "notepad d:/foo.txt", 0, true ); // Redirect はできない sh.Run( "hostname > foo.txt", 0, true ); // notepad を最小化で起動 // 処理は Block される sh.Run( "notepad", 7, true );
WindowMode
0 ウィンドウを非表示 && 別のウィンドウをアクティブにする 1 ウィンドウをアクティブ && 表示 ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻る 2 ウィンドウをアクティブにし、最小化ウィンドウとして表示する 3 ウィンドウをアクティブ && 最大化にして表示 4 ウィンドウを最新のサイズと位置で表示 アクティブ・ウィンドウは切り替わらない 5 ウィンドウを現在のサイズと位置で表示 && アクティブにする 6 指定したウィンドウを最小化し、Zオーダー上で次に最上位となるウィンドウをアクティブにする 7 ウィンドウを最小化ウィンドウとして表示. アクティブ・ウィンドウは切り替わらない 8 ウィンドウを現在の状態で表示する。アクティブ・ウィンドウは切り替わらない 9 ウィンドウをアクティブにして表示する。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻る 10 アプリケーションを起動したプログラムの状態に基づいて表示状態を設定する



SpecialFolder


SYNTAX SpecialFolder( "path" ); DESC Windows デフォルトの Directory パスをかえす ( MyDocument など )
// Documents and Settings/ var d = sh.SpecialFolders("MyDocuments");



環境変数(ENV)


SYNTAX var sh = new ActiveXObject("WScript.Shell"); var env = sh.Environment("Process"); // Documents and Settings/usr env.item("HOMEPATH");
SYSTEM : 全ユーザーに適用 UEER : ユーザー環境変数。ログオン・ユーザーごとに適用 PROCESS : プロセス環境変数 現在有効な全環境変数( readonly ) VOLATILE : 一時環境変数。ログオフと同時に破棄される一時的な環境変数
// user ENV Object を取得 var WshEnvironment = sh.Environment("User"); // .item( KEY ) で 値を取得 // 環境変数 "PATH" を参照 var val = env.item( "PATH" ); // .item( KEY )で値を指定 WshEnvironment.item( "PATH" ) = val; // USERNAME は PROCESS になる var env = sh.Environment("PROCESS"); var usr = env.item( "USERNAME" );



レジストリ.Registery


// レジストリを作成 sh.RegWrite "HKCU\Software\ACME\FortuneTeller\", 1, "REG_BINARY" // KEY の値を取得 sh.RegName( "HKCU\Software\ACME\FortuneTeller\MindReader" ); // 消す sh.RegDelete( "HKCU\Software\ACME\FortuneTeller\MindReader" );