WSH (JScript)将CLI参数传递给内部激活的另一个脚本



我的JScript脚本是s1.js

var objArgs = WScript.Arguments;
WScript.Echo(objArgs.length)

时,s1.js使用WSH运行我得到了预期的WScript.Arguments

当我在内部运行s1.js时,它变得棘手。假设我有另一个脚本s2.js:

var F = new Function(strScript); // strScript is the content of s1.js
(F)("test");

当运行s2.js时,无论使用什么CLI参数,s1.js中定义的var objArgs = WScript.Arguments获得与传递给s2.js的参数相同的参数。

这并不让我感到惊讶,因为我认为var objArgs = WScript.Arguments是全局的,由WSH设置。

  1. 我如何激活s1.js(内部在s2.js)和传递CLI参数给它?
  2. s1.js如何区分两种不同的运行方式并正确读取其参数?

我不确定WScript,但它似乎是所有Js片段中的全局成员。我做了一些基本的测试,事实上,WScript。参数在所有实例中是相同的。问题的根源在于新的Function()调用,因为第一个N-1个参数声明了参数的模板,最后一个函数的主体。

这是帮助我的答案->回应

最新更新