将脚本作为字符串传递给cscript / wscript

时间:2015-04-02 15:13:59

标签: windows vbscript scripting

我想知道是否可以将脚本作为字符串传递给cscript / wscript,类似于PowerShell的-Command选项。或者,还有另一种从cmd执行VBS脚本的方法吗?

cscript / wscript的文档没有列出这样的选项,但由于我不熟悉Windows脚本,我想知道我是否遗漏了一些东西。

谢谢!

2 个答案:

答案 0 :(得分:2)

许多(脚本)语言都有R(ead)-E(评估)-P(rint)-L(oop) - 在命令行上给出的工具和/或进程字符串。所以使用Powershell你可以做到:

powershell -command (2+3)*10
50

的Perl:

perl -e "print 'hello';"
hello

对于VBScript,你必须自己动手;可能会开始herehere(ff)。

一个非常简单的(概念验证)脚本,它只处理来自命令行的代码:

Option Explicit

Dim goWAN : Set goWAN = WScript.Arguments.Named
Dim goWAU : Set goWAU = WScript.Arguments.UnNamed

If goWAN.Count <> 1 Or goWAU.Count <> 1 Or Not (goWAN.Exists("x") Or goWAN.Exists("e")) Then
   WScript.Echo "usage: ", WScript.ScriptName, "/x|/e ""code to execute/evaluate"" (use ' for "")"
Else
   Dim sCode : sCode = Replace(goWAU(0), "'", """")
   If goWAN.Exists("x") Then
      Execute sCode
   Else
      WScript.Echo Eval(sCode)
   End If
End If

输出:

cscript 29416456.vbs
usage:  29416456.vbs /x|/e "code to execute/evaluate" (use ' for ")

cscript 29416456.vbs /e "(2+3)*10"
50

cscript 29416456.vbs /x "WScript.Echo 'Now: ' & Now"
Now: 4/3/2015 10:53:49 PM

答案 1 :(得分:2)

一种方法是通过echo&gt;从cmd写一个vbs文件,然后执行它,然后删除它。

示例:

echo WScript.Echo WScript.CreateObject("WScript.Shell").SpecialFolders(WScript.Arguments(0)) > test.vbs
cscript test.vbs "Desktop" //nologo
del test.vbs