cscript.exe打开一个窗口

时间:2012-05-23 08:58:27

标签: vbscript windows-7-x64 wsh

我有一个需要以32位运行的vbs文件,即使我运行的是Windows 7 64位。我可以使用命令

启动此文件
C:\Windows\SysWOW64\cscript.exe my-file.vbs

并且工作正常,但它留下了一个冗余的命令提示符窗口,我必须每次手动关闭。它还使得将此vbs文件作为启动项运行非常麻烦。

有没有办法在后台启动我的32位vbs文件?

3 个答案:

答案 0 :(得分:3)

尝试使用64位问题,如果有效,可以将其与其他答案结合起来

编辑:这是一个在32/64位问题上更深入的问题

How do I check if wscript/cscript runs on x64 host OS?

此处修改后的版本,应确保脚本在64位平台上运行

On Error Resume Next
Dim WshShell, OsType
Set WshShell = CreateObject("WScript.Shell")
OsType = WshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")
If OsType = "x86" then
  wscript.echo "Windows 32bit system detected"
else
  wscript.echo "Windows 64bit system detected"
  If InStr(LCase(WScript.FullName),"system32") Then 
    CreateObject("WScript.Shell").Run """%systemroot%\SysWOW64\wscript.exe"" """ & WScript.ScriptFullName & """" 
    Wscript.Quit 
  End If 
end if

Msgbox("I ran..")

答案 1 :(得分:1)

如果你需要使用cscript,这是恕我直言的酷解决方案

Const HIDDEN_WINDOW = 0

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW

Set objProcess = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")

objProcess.Create "Cscript.exe h:\Script\Test1.vbs", null, objConfig, intProcessID

答案 2 :(得分:0)

如果您可以使用wscript,您可以执行以下操作,这是最简单的方法

Set objShell = CreateObject("Wscript.Shell")
objShell.Run "Wscript.exe h:\Script\Test1.vbs"

实际上你可以做一个单行(我是一个Ruby家伙8>)

CreateObject("Wscript.Shell").Run("Wscript.exe h:\Script\Test1.vbs")