その他



CALL − 他のバッチ(スクリプト)の呼び出し

<BAT(test.bat)>
@echo off
echo sub.batを実行します。
call sub.bat 55 ABC
echo sub.batの実行を終了しました。

<sub.bat>
echo 第1パラメータは"%1"です。
echo 第2パラメータは"%2"です。


<結果>
sub.batを実行します。
第1パラメータは"55"です。
第2パラメータは"ABC"です。
sub.batの実行を終了しました。


<VBS(test.vbs)>
Set shell = WScript.CreateObject("WScript.Shell")

shell.Popup "sub.vbsを実行します。", 3   ' 3= 3秒で自動的にメッセージボックス閉じる。
shell.Run "sub.vbs 55 ABC", 1, true
shell.Popup "sub.vbsの実行を終了しました。", 3

<sub.vbs>
Set shell = WScript.CreateObject("WScript.Shell")

s1 = WScript.Arguments.Unnamed.Item(0)
s2 = WScript.Arguments.Unnamed.Item(1)

WScript.Echo "第1パラメータは" & s1 & "です。"
WScript.Echo "第2パラメータは" & s2 & "です。"


<JS(test.js)>
shell = WScript.CreateObject("WScript.Shell");

shell.PopUp("sub.jsを実行します。", 3);   // 3= 3秒で自動的にメッセージボックス閉じる。
shell.Run("sub.js 55 ABC", 1, true);
shell.PopUp("sub.jsの実行を終了しました。", 3);

<sub.js>
shell = WScript.CreateObject("WScript.Shell")

s1 = WScript.Arguments.Unnamed.Item(0);
s2 = WScript.Arguments.Unnamed.Item(1);

WScript.Echo("第1パラメータは" + s1 + "です。");
WScript.Echo("第2パラメータは" + s2 + "です。");



CHOICE − Y/N を選択させる

<BAT> (choiceコマンドは Windows 2000、 WindowsXP 等には存在しません。)
@echo off
choice
if errorlevel 2 goto :NO

:YES
echo Yが押されました。
goto :END

:NO
echo Nが押されました。

:END

<VBS>
Set shell = WScript.CreateObject("WScript.Shell")

ret = shell.Popup("選択してください。", , , 4) '4=はい&いいえ
Select Case ret
    case 6  WScript.Echo "「はい」が押されました。"
    case 7  WScript.Echo "「いいえ」が押されました。"
End Select

<JS>
shell = WScript.CreateObject("WScript.Shell");
ret = shell.Popup("選択してください。", -1, "", 4); //-1=自動で閉じない、4=はい&いいえ
switch(ret){
    case 6: WScript.Echo("「はい」が押されました。");
            break;
    case 7: WScript.Echo("「いいえ」が押されました。");
            break;
}



DATE − 日付の表示

<BAT>
date 

<VBS>
WScript.Echo Date

<JS>
s = "";
d = new Date();
s += d.getYear() + "/" + (d.getMonth()+1) + "/" + d.getDate();
WScript.Echo(s);



ECHO − メッセージの表示

<BAT>
echo こんちは。

<VBS>
WScript.Echo "こんにちは。"

<JS>
shell = WScript.CreateObject("WScript.Shell");
shell.PopUp("こんにちは。", 2, "メッセージ", 64); // 2=秒数、64=[i]アイコン

ここではVBS版とJS版で異なる方法を示した。Echoはボタンを押すまで閉じない。Popupは指定秒数で閉じる。



EDIT − テキストエディターの起動

<BAT> (editコマンドは Windows 2000、 WindowsXP 等には存在しません。)
edit sub.vbs /b

/bはモノクロ画面で起動させるオプション。

<VBS>
Set shell = WScript.CreateObject("WScript.Shell")
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set cfol = fs.GetFolder(".")
s = "edit.exe " & cfol.ShortPath & "\sub.vbs /b"
shell.Run s

VBS版ではBAT版と同じエディタ(edit.exe)を起動してみた。edit.exeを起動すると、カレントディレクトリが変わってしまうので注意が必要。メモ帳等の起動はTYPEを参照のこと。 (edit.exeは Windows 2000、 WindowsXP 等には存在しません。)

<JS>
shell = WScript.CreateObject("WScript.Shell");
shell.Run("notepad.exe sub.vbs");

JS版ではメモ帳を起動させた。



PAUSE − 何かキーが押されるまで処理を停止する

<BAT>
pause  

<VBS>
Set shell = WScript.CreateObject("WScript.Shell")
shell.Popup "続けるにはボタンを押してください。"

<JS>
shell = WScript.CreateObject("WScript.Shell");
shell.Popup("続けるにはボタンを押してください。");



REM − 注釈

<BAT>
rem 注釈 

<VBS>
Rem 注釈
'   これも注釈

<JS>
//注釈

/* これも、
注釈
である。 */



SET − 環境変数の表示

<BAT>
set  

<VBS>
Set shell = WScript.CreateObject("WScript.Shell")
Set list = shell.Environment("PROCESS")
For Each temp In list
    s = s & temp & vbCrLf
Next
WScript.Echo s

<JS>
shell = WScript.CreateObject("WScript.Shell");
list = new Enumerator( shell.Environment("PROCESS") );
var ret = "";
for(; !list.atEnd(); list.moveNext())
    ret = ret + list.item() + "\n";

WScript.Echo(ret);



START − アプリケーションの起動

<BAT>
start notepad.exe sub.vbs

<VBS>
Set shell = WScript.CreateObject("WScript.Shell")
shell.Run "notepad.exe sub.vbs", 3, true
WScript.Echo "メモ帳が閉じられました。"

<JS>
shell = WScript.CreateObject("WScript.Shell");
shell.Run("notepad.exe sub.vbs", 2);
WScript.Echo("スクリプトを終了します。");

VBS版とJS版はメモ帳を異なる状態で起動した。Runメソッドの3つの引数に関しては以下を参照のこと。

obj.Run(  @ファイル名,  Aウインドウスタイル,  B同期 )

@はファイル名または実行ファイル名を指示。

Aはウインドウの大きさ示す
    1 デフォルトの大きさ(省略可)
    0 非表示
    2 最小(アイコン)表示
    3 最大表示

Bはtrueでそのアプリが閉じられるまでスクリプトは待機し、
    false(省略可)とすると待機しない。



TIME − 時刻の表示

<BAT>
time

<VBS>
WScript.Echo Time

<JS>
d = new Date();
WScript.Echo( d.toLocaleString() );

JS版のtoLocaleString()では日付も表示されてしまうが、この表示はマシンにより異なるので、時刻のみを取り出す方法を一般化することはできないようだ。

Spicaさんのご指摘により以下のように訂正させていただきます(2008/10/20)。

d = new Date();
t = "";
t = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); 
WScript.Echo(t);


もくじへ

元のページに戻る

当Webページの一部または全部を筆者(saikawa)に無断で複写、複製、転載することを禁じます。