1
.vbs
ファイルをノードアプリケーションから実行する方法を調べようとしています。ノードを持つ.vbsスクリプトを実行する
スクリプトはそれ自身のもので、ノードアプリケーションはスクリプトの実行が終了したとき以外は何も情報を必要としません。
これを行う方法が見つかったら、スクリプトにパラメータを渡す方法を見ていきますが、今はスクリプトをどのように実行できるかを知る必要があります。
おかげ
.vbs
ファイルをノードアプリケーションから実行する方法を調べようとしています。ノードを持つ.vbsスクリプトを実行する
スクリプトはそれ自身のもので、ノードアプリケーションはスクリプトの実行が終了したとき以外は何も情報を必要としません。
これを行う方法が見つかったら、スクリプトにパラメータを渡す方法を見ていきますが、今はスクリプトをどのように実行できるかを知る必要があります。
おかげ
使用child_process.spawnSync(command[, args][, options])
。 a,bを参照してください。デモ:考える
:
|..
+---vbs
| slave.vbs
|
\---nodejs
master.js
slave.vbs:
Option Explicit
Dim a : a = "no arg"
If 0 < WScript.Arguments.Count Then a = WScript.Arguments(0)
Dim o : o = Array("", WScript.ScriptName, a, Time())
o(0) = "MsgBox"
MsgBox Join(o, "|")
o(0) = "StdOut"
WScript.Stdout.WriteLine Join(o, "|")
o(0) = "StdErr"
WScript.Stderr.WriteLine Join(o, "|")
WScript.Quit 3
master.js:
'use strict';
const
spawn = require('child_process').spawnSync,
vbs = spawn('cscript.exe', [ '../vbs/slave.vbs', 'one' ]);
console.log(`stderr: ${vbs.stderr.toString()}`);
console.log(`stdout: ${vbs.stdout.toString()}`);
console.log(`status: ${vbs.status}`);
出力:
node master.js
(MessageBox)
stderr: StdErr|slave.vbs|one|14:09:39
stdout: StdOut|slave.vbs|one|14:09:39
status: 3