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

WSH (JScript) pass CLI arguments to another script that is activated internally

所以我有我的 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.Arguments 在所有实例中都是相同的。问题的根源在于 new Function() 调用,因为前 N-1 个参数声明参数模板,最后一个函数的主体。

这是对我有帮助的答案 ->