如何在不打开其他命令提示符的情况下从批处理文件调用VbScript



我有一个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 & "rootcimv2") 
    Set objStartup = objWMIService.Get("Win32_ProcessStartup") 
    Set objConfig = objStartup.SpawnInstance_ 
    objConfig.ShowWindow = HIDDEN_WINDOW 
    Set objProcess = GetObject("winmgmts:rootcimv2:Win32_Process") 
    errReturn = objProcess.Create("Notepad.exe", null, objConfig, intProcessID) 

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

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

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

rem This is the command line version
cscript "C:UsersguestDesktop123MyScript.vbs"

rem This is the windowed version
wscript "C:UsersguestDesktop123MyScript.vbs"

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

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

您仍然可以使用"C:UsersguestDesktop123MyScript.vbs",但这需要用户具有与wscript关联的*.vbs

如果要修复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)?

相关内容

最新更新