【发布时间】: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.bat 和script_two.js 在功能上看起来相同。如果您能帮助我了解问题所在以及如何解决,我将不胜感激。
【问题讨论】: