【问题标题】:One WSH JScript instance to communicate to the StdIn and StdOut of another instance一个 WSH JScript 实例与另一个实例的 StdIn 和 StdOut 通信
【发布时间】:2020-11-13 22:05:29
【问题描述】:

我想要一个 JScript 实例向另一个 JScript 实例的 StdIn 发送一个字符串;让另一个处理它,然后读取返回的 StdOut 结果。考虑下面的代码块:

// script_zero.js
var objShell = WScript.CreateObject("Wscript.Shell");

var objExec = objShell.Exec("%comspec% /c script_one.bat");

objExec.StdIn.Write("some random string");

WScript.StdOut.Write(objExec.StdOut.ReadAll());

rem script_one.bat
@echo off
set /p userInput=
echo %userInput%

效果很好,返回

一些随机字符串

如果我运行cscript //E:JScript //Nologo script_zero.js

但是,如果我将第二行更改为

var objExec = objShell.Exec("%comspec% /c cscript //E:JScript //Nologo script_two.js");

所以它可以调用JScript

// script_two.js
var InputLine = WScript.StdIn.ReadLine();
WScript.StdOut.WriteLine(InputLine);

卡住了,大概是被调用的脚本在等待输入。尽管script_one.batscript_two.js 在功能上看起来相同。如果您能帮助我了解问题所在以及如何解决,我将不胜感激。

【问题讨论】:

标签: windows jscript wsh


【解决方案1】:

好的,看来要把script_zero.js的最后两行改成

objExec.StdIn.WriteLine("some random string");

WScript.StdOut.WriteLine(objExec.StdOut.ReadLine());

解决问题。但我会等待其他人提出更好的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多