0

我正在为我公司软件的新部署编写一批..这是我到目前为止所拥有的......

wscript.exe "invisible.vbs" "apache_start.bat" /wait
wscript.exe "invisible.vbs" "mysql_start.bat" /wait
"C:\Program Files\Internet Explorer\iexplore.exe" http://localhost

如你所见,这个脚本应该启动 apache,然后启动 mysql,然后用 IE 打开默认页面。

问题是如果用户运行此脚本两次,它会运行 apache 和 mysql 两次并加载两个单独的实例。我需要的解决方案是检查进程是否已经在运行,如果没有,则运行两个 wscript 命令。我对 shell 非常糟糕,所以请尝试给出具体的回应!我是一名软件工程师,而不是系统管理员。谢谢您的帮助!

4

2 回答 2

0

对于 XAMPP,apache/bin 文件夹中有一个 pv.exe 文件,XAMPP 使用它来查看服务是否正在运行。查看 WorldDrknss 在此线程中的回答以获得一些重要信息:http ://www.apachefriends.org/f/viewtopic.php?p=80047

解决您的问题的代码是将您的 mysql_start.bat 文件修改为:

@echo off 
apache\bin\pv mysqld.exe %1 >nul 
if ERRORLEVEL 1 goto Process_NotFound 
echo MySQL is running 
goto END 
:Process_NotFound 
echo Process %1 is not running 
mysql\bin\mysqld.exe --defaults-file=mysql\bin\my.ini --standalone --console
goto finish 
:finish

这将检查 mysqld.exe 是否正在运行。如果是的话,它只是呼应了这一点。如果没有,它会启动服务。

于 2012-05-22T02:05:48.397 回答
0

作为一名软件工程师,我认为您在编写脚本方面比一些系统管理员更有优势......

使用 PowerShell 将使这一切变得容易。使用下面的模板来执行服务 - 你需要使用它两次,然后按照上面的方法启动 IE。

If ((Get-Process mysqlprocessname.exe)) {Write-Host Skipping MySQL}
Else { Start-Process ...}

这将花费您几分钟的时间来研究使用 PowerShell 启动进程的最佳方式。此外,您可能希望通过管道将 Start-Process 传递给 Out-Null,以便脚本等待启动 IE 和 Apache。

其他人可能希望从批处理文件中使用更简单的方法。

于 2012-05-21T17:15:51.740 回答