【问题标题】:Starting XAMPP with batch only if it isn't already running仅当 XAMPP 尚未运行时才使用批处理启动 XAMPP
【发布时间】:2012-05-21 16:50:53
【问题描述】:

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

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 非常糟糕,所以请尝试给出具体的回应!我是一名软件工程师,而不是系统管理员。感谢您的帮助!

【问题讨论】:

    标签: powershell batch-file window xampp


    【解决方案1】:

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

    使用 PowerShell 会让这一切变得简单。使用下面的模板来执行服务 - 你需要使用它两次,然后像上面一样启动 IE。

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

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

    其他人可能希望通过批处理文件以更简单的方式加入。

    【讨论】:

    • 我不清楚。我实际上需要一种方法来使用默认的 windows shell 来做到这一点。我的道歉
    • 这是一篇关于如何在批处理文件中使用 tasklist.exe 的精彩文章。我认为这是您需要的:stackoverflow.com/questions/4969595/…
    【解决方案2】:

    对于 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 是否正在运行。如果是,它只是呼应了这一点。如果没有,它会启动服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-26
      • 2018-12-02
      • 2010-10-14
      • 1970-01-01
      • 2020-11-01
      • 2018-08-18
      • 2016-03-10
      相关资源
      最近更新 更多