在我的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