Windows批处理脚本使控制台窗口保持打开状态


Windows Batch script leaves console window open

我正在尝试设置一台朋友的Windows7计算机来运行Nginx&PHP5.我在网上找到了一个启动和停止Nginx&PHP,在添加了目录更改行之后,我就可以让它工作了。然而,似乎有一个问题导致它打开了启动PHP的第二个控制台窗口。有没有办法关闭控制台窗口?

批脚本:

@ECHO OFF
CD C:'nginx
tasklist /FI "IMAGENAME eq nginx.exe" | find /I "nginx.exe" > NUL && (
    GOTO STOP
) || (
    GOTO START
)
:START
ECHO Starting nginx
start nginx
ECHO Starting PHP
start php'php-cgi.exe -b 127.0.0.1:9000 -c c:'nginx'php'php.ini
GOTO DONE
:STOP
ECHO Stopping nginx
start nginx -s quit
ECHO Stopping PHP
taskkill /f /IM php-cgi.exe
:DONE
TIMEOUT 3

您可以使用START上的/b参数来启动应用程序,而无需打开另一个cmd窗口

START /b php'php-cgi.exe -b 127.0.0.1:9000 -c c:'nginx'php'php.ini

更新:
这似乎是php-cgi.exe的行为。有关完整的故事和解决方法,请参阅本文。http://wiki.nginx.org/PHPFastCGIOnWindows

启动后,php-cgi.exe将继续侦听连接在命令提示窗口中。要隐藏该窗口,请使用小型实用程序RunHiddenConsole

基本上,您只需要d/l并将RunHiddenConsole解压缩到nginx目录,然后将此行更改为:

RunHiddenConsole.exe php'php-cgi.exe -b 127.0.0.1:9000 -c c:'nginx'php'php.ini

您正在寻找

start php'php-cgi.exe -b 127.0.0.1:9000 -c c:'nginx'php'php.ini 
/exit b

要运行.BAT Invisible,可以使用一个简单的vbs脚本。

将其放入.VBS文件:

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False

然后像这样运行BAT:

wscript.exe "C:'invisible.vbs" "C:'YourBat.bat"