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

Is there a way to run VBScript as a command-line argument rather than a file?

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

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:

现在我不 介意 可怕的 for 语句来捕获输出,我只想知道是否有办法避免必须维护一个单独的 VBScript 文件,或即时创建和销毁一个文件。

类似于:

cscript //nologo //exec wscript.echo day(date()-1)

会很理想,但我知道 cscript 不支持这个。

有什么办法可以做到这一点,记住我想从 cmd 脚本中将其输出捕获到一个变量中?

您可以编写 一个 脚本来回应 Eval 的参数:

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

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

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