4

我有一个 VBScript 文件,我试图从批处理文件中调用它。我将以下代码处理到记事本并保存为 MyScript.vbs

(http://gallery.technet.microsoft.com/scriptcenter/8bbed56f-a7aa-491f-a296-687dd96098a3#content)

    Const HIDDEN_WINDOW = 12 

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:" _ 
               & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set objStartup = objWMIService.Get("Win32_ProcessStartup") 

    Set objConfig = objStartup.SpawnInstance_ 
    objConfig.ShowWindow = HIDDEN_WINDOW 
    Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") 
    errReturn = objProcess.Create("Notepad.exe", null, objConfig, intProcessID) 

创建了一个名为 Run.bat 的批处理文件,并在其中添加了以下代码。

    @echo off

    start "C:\\Users\\guest\\Desktop\\123\\MyScript.vbs"

当我尝试通过命令提示符执行批处理文件时,这会打开另一个命令提示符。

4

2 回答 2

11
rem This is the command line version
cscript "C:\Users\guest\Desktop\123\MyScript.vbs"

或者

rem This is the windowed version
wscript "C:\Users\guest\Desktop\123\MyScript.vbs"

您还可以添加选项//e:vbscript以确保脚本引擎将您的脚本识别为 vbscript。

Windows/DOS 批处理文件不需要\像 *nix 那样转义。

你仍然可以使用"C:\Users\guest\Desktop\123\MyScript.vbs",但这需要用户已经*.vbs关联到wscript

于 2012-07-27T14:47:23.130 回答
0

如果要修复 vbs 关联类型

regsvr32 vbscript.dll
regsvr32 jscript.dll
regsvr32 wshext.dll
regsvr32 wshom.ocx
regsvr32 wshcon.dll
regsvr32 scrrun.dll

此外,如果您由于管理原因无法使用 vbs,请将您的脚本转换为 vb.net 程序,该程序设计简单、容易,只需 5 分钟。

最大的区别是函数和子函数都使用括号而不是函数来调用。

因此,编译器安装在所有安装了 .NET 的计算机上。

有关如何制作 .NET exe 的信息,请参见此处的这篇文章。请注意,该示例适用于脚本主机。您不能使用它,您必须将您的 vbs 代码作为 .NET 代码放入。

如何将 VBScript 转换为可执行 (EXE) 文件?

于 2013-10-15T20:05:22.137 回答