有没有办法将 运行 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
...
假设您有一个非常简单的单行 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
...