2012-05-23 221 views
1

我有一個需要在32位運行的vbs文件,即使我正在運行Windows 7 64位。我可以用命令cscript.exe打開一個窗口

C:\Windows\SysWOW64\cscript.exe my-file.vbs 

推出這個文件,並且工作得很好,但它給我留下了,我必須手動關閉每次重複命令提示符窗口。將這個vbs文件作爲啓動項目運行也非常麻煩。

有沒有辦法在後臺啓動我的32位vbs文件?

回答

3

嘗試此64位的問題,如果你的作品CA n,其中其他答案

編輯結合起來:在這裏,去更深入的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..") 
+0

這是要走的路,雖然我不得不把檢查倒過來...... :-) – koenig

+0

你的意思是你用「如果不是Instr」..?然後我可以調整我的答案.. 不能自己測試它,沒有64位客戶端 – peter

+0

不,我檢查InStr中的「system32」(這是64位,去圖),如果是的話,調用CreateObject與「SysWOW64 「而不是」系統性「。它現在可以在64位版本上運行,因爲腳本按照您的建議在32位中重新啓動;剩下的就是使它通用,以便相同的腳本可以在32位和64位上運行並啓動正確版本的wscript。 – koenig

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") 
最簡單的方法
+0

在64位的世界裏,這調用了64位版本的wscript.exe,如果我沒有弄錯的話。我嘗試這種方法時得到的錯誤消息似乎指向相同的結論。 – koenig

+0

你會得到什麼錯誤?看到這篇文章http://blogs.msdn.com/b/joshpoley/archive/2008/09/18/running-32bit-dependent-scripts-in-a-64bit-world.aspx – peter

+0

請嘗試在我的第三個解決方案回答 – peter

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 
+0

我試圖將這段代碼輸入到一個新文件test.vbs中,並讓最後一行指向我的vbs文件。恐怕沒有什麼事發生。 – koenig

+0

必須是64位的問題,我第一次嘗試在我的Vista 32位系統上,它的工作就像一個魅力,已經嘗試過我的第三個解決方案? – peter