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
设置。
问题
- 如何激活
s1.js
(在 s2.js
内部)并将 CLI 参数传递给它?
s1.js
如何区分 运行 的两种不同方式并正确阅读其参数?
WScript 不太清楚,但它似乎是所有 Js 代码段中的全局成员。我做了一些基本测试,事实上,WScript.Arguments 在所有实例中都是相同的。问题的根源在于 new Function() 调用,因为前 N-1 个参数声明参数模板,最后一个函数的主体。
这是对我有帮助的答案 ->
所以我有我的 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
设置。
问题
- 如何激活
s1.js
(在s2.js
内部)并将 CLI 参数传递给它? s1.js
如何区分 运行 的两种不同方式并正确阅读其参数?
WScript 不太清楚,但它似乎是所有 Js 代码段中的全局成员。我做了一些基本测试,事实上,WScript.Arguments 在所有实例中都是相同的。问题的根源在于 new Function() 调用,因为前 N-1 个参数声明参数模板,最后一个函数的主体。
这是对我有帮助的答案 ->