为什么批处理文件有时会在执行应用程序时挂起?

时间:2017-09-24 15:09:08

标签: windows batch-file cmd windows-scripting

我正忙着尝试使用批处理文件在Windows 10上自动执行一些手动启动任务。但我面临一个奇怪的问题。

我想创建一个批处理脚本,它将使用一些参数启动 Xming 。所以我想我可以把它放在批处理文件中。

"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

如果我在打开的命令窗口中执行此操作,它将按顺序多次正常工作,而不会启动超过1个 Xming 的实例。但是,一旦我将这一行放入一个bat文件并执行该脚本,它有时会起作用,有时会永远挂起。

我一直在谷歌搜索一段时间,我找不到任何描述我遇到的问题的内容。任何帮助表示赞赏。

以下是说明我的问题的命令提示符的输出:

C:\Users\JS>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

C:\Users\JS>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

C:\Users\JS>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

...

C:\Users\JS>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

C:\Users\JS>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

C:\Users\JS>
C:\Users\JS>cd desktop

C:\Users\JS\Desktop>startup.bat

C:\Users\JS\Desktop>"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

... Hangs forever here

其中startup.bat只包含1行:

"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

1 个答案:

答案 0 :(得分:0)

我建议使用命令 START ,例如Compo,在单独的进程中明确启动此应用程序。

start "Xming" /D"%ProgramFiles(x86)%\Xming" "%ProgramFiles(x86)%\Xming\Xming.exe" :0 -clipboard -multiwindow

Windows命令解释程序执行命令 START 后立即继续执行批处理文件中的下一行,而 Xming 在与执行命令进程并行运行的单独进程中执行批处理文件。

START 的第一个参数是可选标题,如果任何其他参数必须用双引号括起来,则需要指定该标题,否则此双引号参数将被解释为窗口标题。

/D开头的第二个参数定义了应用程序运行的目录(当前目录)中的开头。这里指定 Xming 的当前目录是其程序文件目录。这可能很重要,因为某些应用程序编码不好,如果启动它的进程的当前目录不是应用程序的程序文件目录,则无法正常工作。

所有其他参数都是使用其参数运行的应用程序。

在命令提示符窗口start /?中运行以获取此命令的帮助,以解释它及其选项。