有没有办法将VBScript作为命令行参数而不是文件运行?

时间:2015-08-07 07:44:15

标签: vbscript command-line-arguments wsh

假设您需要运行一个非常简单的单行VBScript命令,比如获取昨天的某一天:

var result = [],
    names = [],
    index;

var scores = [
   {"firstName":"John", "value": 89},
   {"firstName":"Peter", "value": 151},
   {"firstName":"Anna", "value": 200},
   {"firstName":"Peter", "value": 22},
   {"firstName":"Anna","value": 60}
];

scores.forEach(function (score) {
  index = names.indexOf(score.firstName);

  if (index === -1) {
     index = names.push(score.firstName) - 1;
     result.push({firstName: score.firstName, value: 0});
  }

  result[index].value += score.value;
});

console.log(result);

目前,我必须拥有一个单独的wscript.echo day(date()-1) 文件,然后运行它:

.vbs

或者,如果我不想单独维护脚本:

for /f %%a in ('cscript //nologo myscript.vbs') do set dd=%%a

现在我没有介意用于捕获输出的可怕echo wscript.echo day(date()-1) >temp.vbs for /f %%a in ('cscript //nologo temp.vbs') do set dd=%%a del /s temp.vbs >nul: 2>nul: 语句,我只想知道是否有办法避免必须维护单独的VBScript文件,或者动态创建和销毁一个。

类似的东西:

for

会很理想,但我知道cscript //nologo //exec wscript.echo day(date()-1) 不支持此功能。

有没有办法实现这一点,请记住我想将其输出捕获到cscript脚本的变量中?

1 个答案:

答案 0 :(得分:2)

您可以编写与回复Eval'ed参数相对应的一个脚本:

WScript.Echo Eval(WScript.Arguments(0))

一个脚本,它回显由(第一个)参数指定的计算结果:

Select Case WScript.Aruments(0)
  Case "prevday"
    wscript.echo day(date()-1)
  Case "answer"
    WScript.Echo 4711
  ...