在我的Windows 7 64位Home Premium框中安裝PostgreSQL 9.1.2期間,掛起安裝。經過長時間的激烈搜索,我發現問題是安裝程序VB腳本掛起,等待批處理文件在隱藏窗口中完成。使用WShell啓動批處理文件時VBScript掛起。運行
予分離問題到下面的行的代碼:
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "hello.bat", 1, True
(其中1
套WindowStyle於可見光和True
等待完成)。 Run
調用已啓動命令提示符,但未執行批處理文件。因此,它永遠不會完成。
我直接啓動cmd.exe的批處理文件,而不是解決了這個問題,根據大量的在線來源:
objShell.Run "%COMSPEC% /c hello.bat", 1, True
由於修復埋在PostgreSQL安裝程序(我已經提交了bug report ),除非安裝程序被修改,否則我只能使用work around這個問題。
但是我的主要問題是:
- 爲什麼第一個電話掛?
- 爲什麼要使用%COMSPEC%而不是直接調用批處理?
關於#2,這可能是因爲執行.bat直接假定與.bat文件關聯的默認操作是執行它嗎?我過去(在其他機器上)將此默認操作更改爲「編輯」。如果我這樣做了,我也會掛上PostgreSQL安裝程序! (我想)
批處理文件在其他機器上正常執行。所以這檯筆記本電腦有些奇怪。所以,對於#1,我需要弄清楚爲什麼這一臺筆記本電腦是不同的。我要指出,有與批處理文件中有一些奇怪的行爲,這臺機器上(其中一個我只注意到):
- 的上下文菜單操作只包含「打開」,缺少「編輯」,「運行」,「運行方式」
- 雙擊一個批處理文件,打開命令提示符,但不執行批處理文件
在寫這個我只是注意到#2。顯然,.bat的默認操作會搞亂。昨天我幾乎把我的電腦從我的註冊表中刪除了上下文菜單處理程序,正如幾個網站試圖恢復我的「編輯」,「運行」等條目所建議的那樣。
關於問題1和2的任何意見,將不勝感激。
感謝, 埃裏克
我解決了這個問題,並會在7個小時內發佈答案(新用戶,抱歉)。基本上我必須刪除這個鍵:HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .bat,如[注意] [http://help.lockergnome.com/windows/BAT-File-Association-Broken- -ftopict514456.html) – cod3monk3y 2012-01-27 20:08:42