VBSを秀丸から直接実行No.02827
mizu2023 さん 01/12/13 09:44
 
はじめまして。僕はVBSを秀丸から作っているんですが、
秀丸からVBSを直接実行できると聞いたのですがどのように
すればいいのかがわからないのです。マクロを使うようなのですが
よろしくお願いします。

[ ]
RE:02827 VBSを秀丸から直接実行No.02830
TAKA さん 01/12/13 12:07
 
mizu2023さん、はじめまして。TAKA と申します。

>秀丸からVBSを直接実行できると聞いたのですがどのように
>すればいいのかがわからないのです。マクロを使うようなのですが
>よろしくお願いします。

以下のようなマクロとバッチファイルを作れば良いです。

VBSは知らないので、よく分かりませんが、ノートパッドを起動し
ます。書き方も違うのかもしれませんが、取りあえず、動きます。

// テストVBS(d:\notepad.vbs)(ここから)
Dim WSHShell
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "notepad"
set WSHShell = Nothing
// テストVBS(d:\notepad.vbs)(ここまで)

// テストBAT(d:\test.bat)(ここから)
d:\notepad.vbs
// テストBAT(d:\test.bat)(ここまで)

// テストマクロ(ここから)
    run "d:\\test.bat";
    endmacro;
// テストマクロ(ここまで)

[ ]
RE:02830 VBSを秀丸から直接実行No.02832
つるぴん さん 01/12/13 12:34
 
こんにちは。
鶴田@ユタカ電機と申します。

>// テストBAT(d:\test.bat)(ここから)
>d:\notepad.vbs
>// テストBAT(d:\test.bat)(ここまで)
>
>// テストマクロ(ここから)
>    run "d:\\test.bat";
>    endmacro;
>// テストマクロ(ここまで)

バッチファイルを書かなくても、、、
run "C:\\WINNT\\System32\\WScript.exe \"d:\\notepad.vbs\""
、、、でも動きますよ。
WSScript.exeのパスは環境に合わせて変えてください。

それでは

[ ]
RE:02832 VBSを秀丸から直接実行No.02834
TAKA さん 01/12/13 13:11
 
TAKA です。

>WSScript.exeのパスは環境に合わせて変えてください。

これが本体ですか。まったく知りませんでした。
環境に依存しない?、バッチファイルの方がよいかもしれませんが。

[ ]
RE:02834 VBSを秀丸から直接実行No.02836
ENCODINGSHIFTJIS さん 01/12/13 13:50
 
メニュー/その他/プログラム実行により、編集面からの「直接実行」もできます。
-----------------------------------  test.vbs  を秀丸で開きます
 CreateObject("WScript.Shell").Run "notepad.exe"
-----------------------------------  
上書き保存し、メニュー/その他/プログラム実行に  
WScript %f
で[OK]実行します。

WScript.exe / CScript.exe はSTDIN を読まないので <CON は効きません。
ヘルプファイルのキーワードは 、 「リダイレクト」です。
上の2操作もマクロ化できます。

[ ]
RE:02834 VBSを秀丸から直接実行No.02837
ひろ さん 01/12/13 17:33
 
 TAKA さん今日は、ひろです。
> 環境に依存しない?、バッチファイルの方がよいかもしれませんが。
 そもそも
> // テストBAT(d:\test.bat)(ここから)
> d:\notepad.vbs
> // テストBAT(d:\test.bat)(ここまで)
が必ず動くなら、「WScript.exe は PATH に指定されたフォルダに必ず存在
する」というわけではないのでしょうか? もしそうなら、
run "WScript.exe \"d:\\notepad.vbs\""
で動くと思うのですが...。

[ ]
RE:02837 VBSを秀丸から直接実行No.02838
TAKA さん 01/12/13 18:12
 
TAKA です。

>が必ず動くなら、「WScript.exe は PATH に指定されたフォルダに必ず存在
>する」というわけではないのでしょうか? もしそうなら、
>run "WScript.exe \"d:\\notepad.vbs\""
>で動くと思うのですが...。

言われて見れば、そうですね。動くと思います。
これなら、環境(パス)に依存しないですね。

[ ]
RE:02827 VBSを秀丸から直接実行No.02839
安久津 さん 01/12/13 22:39
 
● 説明。
(1)「ファイル ?.vbs 」の記述の下にある VBSコードを、
    ?.vbs という名前で保存します。
(2) ?.vbs を開いている秀丸上で、メニュー「その他」->「プログラム実行(X)」
    をクリックしてください。
注意。
   //nologo のところが、file://nologo に変換されているかも。
   # ってことは、ここも2重になっているじゃん。(^^;)
---------------------------------------------------------------
● 標準出力だけを秀丸で取得する場合。
'ファイル a.vbs
    dim i
    for i = 1 to 5
        WScript.StdOut.WriteLine "Hello, VBS " & cstr(i)
    next

'メニュー「その他」->「プログラム実行(X)」のコマンドラインに入力する文字列。
'    cscript //nologo a.vbs >con
---------------------------------------------------------------
● DOS アプリ風で、対話的に実行したい場合。
'ファイル b.vbs
    dim cin, cout, cmd
    set cin  = WScript.StdIn
    set cout = WScript.StdOut
    cout.write "Prompt>"
    cmd = cin.ReadLine
    cout.WriteLine "the command is " & cmd
    cout.WriteLine "bye!"
    set cin = nothing
    set cout = nothing

'メニュー「その他」->「プログラム実行(X)」のコマンドラインに入力する文字列。
'    command.com /c cscript //nologo a.vbs
'    ( 注意、WindowsNT, 2000, XP? は、command.com ではなく cmd.exe にする )
'    DOS窓を終了させたくない場合。
'    command.com /k cscript //nologo a.vbs
---------------------------------------------------------------
● 標準入出力は使わず、ダイアログを使う場合。
'ファイルc.vbs
    msgbox "Hello VBS, MsgBox"
    WScript.echo "Hello VBS, Echo"

'メニュー「その他」->「プログラム実行(X)」のコマンドラインに入力する文字列。
'    wscript a.vbs
'    ( DOS窓が気にならないなら、以下でも問題なし )
'    command.com /c cscript //nologo c.vbs
---------------------------------------------------------------
● オマケ。wsf ファイルを使う。
<package>
<comment>
ファイル d.wsf という名前で保存する。
これを使うと、JScript, VBScript, PerlScript のイイとこ取り。
ちなみに VBS を使って Excel の定数とか参照するには、WSF 方式しかないみたい。
メニュー「その他」->「プログラム実行(X)」のコマンドラインに入力する文字列。
    wscript //job:main d.wsf
    cscript //job:main d.wsf
</comment>
<job id="main">
<script language="VBScript">
 'InputBoxを出して入力を返す関数の定義
    function vbinputbox( sPropmt,sTitle,sDefault )
        vbinputbox = InputBox( sPropmt, sTitle, sDefault )
    end function
</script>
<script language="JScript">
//上で定義した関数を使う
var strRet = vbinputbox("なんか入力して","入力ボックスのタイトル","初期値");
WScript.Echo(strRet);
</script>
</job>
</package>
---------------------------------------------------------------
● マクロ化。
// vbs.mac
    $$ext = rightstr(basename,4);
    if( $$ext != ".vbs" || $$ext != ".wsf" ){ beep; endmacro; }

    if( existfile(winsysdir + "\\cmd.exe") ) $$cmd = "cmd.exe";
    else $$cmd = "command.com";

//  run "cscript //nologo " + basename2 + " >con";
    run $$cmd + " /c cscript //nologo " + basename2;
//  run $$cmd + " /k cscript //nologo " + basename2;
//  run "wscript " + basename2;
//  run "wscript //job:main " + basename2;
endmacro;

では。

[ ]
RE:02834 VBSを秀丸から直接実行No.02841
きいろいまふらあ さん 01/12/14 00:03
 
>環境に依存しない?、バッチファイルの方がよいかもしれませんが。

関連付けされてるなら、start を使えばバッチファイルは不要?

[ ]
RE:02839 VBSを秀丸から直接実行No.02843
安久津 さん 01/12/14 01:28
 
>   if( $$ext != ".vbs" || $$ext != ".wsf" ){ beep; endmacro; }
    if( $$ext != ".vbs" && $$ext != ".wsf" ){ beep; endmacro; }

ボケてる。(^^;

[ ]