有没有直接在wscript或cscript命令行运行vbscript的方法?

9
我想在命令行中像批处理一样调用vbs命令。
cmd.exe /c "echo.Hello World! & pause"

显然,这不起作用。
wscript /C MsgBox("Hello world")

我可以打印vbs文件,然后调用临时文件,最后删除它。
cmd.exe /c "echo. [VBSCODE] > temp.vbs & wscript temp.vbs & del temp.vbs"

但这太乱了,我不想看到提示框弹出。
3个回答

19

这个可以直接在命令行上运行:

mshta vbscript:Execute("MsgBox(""Message"",64,""Title"")(window.close)")

同样适用于多个命令:

mshta vbscript:Execute("MsgBox ""Message"",64,""Title"":MsgBox ""Hello again!"",64,""Hello"":close")

是的,当然可以!至少在Win7 x64上是可以的。 - cjones26
有没有使用W/Cscript的方法? - Dexter

2
VBScript需要一个文件作为其源代码。您希望将stdin指定为“文件”,但没有机制可以实现。因此,答案是否定的——您不能在不使用临时文件的情况下从命令行生成和运行VBS代码。
大多数人使用批处理脚本编写临时VBS代码,执行,然后删除临时代码,正如PA所演示的那样。
我发现了一种将VBS代码嵌入批处理文件中的机制,无需临时文件。但这并不是很美观。请参见Is it possible to embed and execute VBScript within a batch file without using a temporary file? 在批处理文件中嵌入JScript更加清晰。

0

避免重复输入相同的内容,只需创建一个包含要运行命令的批处理文件即可

sovb.bat

@echo off
echo %* >%temp%\temp.vbs
wscript %temp%\temp.vbs
del %temp%\temp.vbs

然后从命令行调用它

sovb MsgBox("Hello World")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接