【问题标题】:Call multiple .bat from another .bat without waiting for one to finish从另一个 .bat 调用多个 .bat 而无需等待一个完成
【发布时间】:2018-03-24 13:33:52
【问题描述】:

所以,我想制作一个脚本来执行 2 个 .bat 文件并启动一些 .exe 文件。

但是,.bat 文件应该继续运行。

我有这样的事情:

pushd tools\wamp64
start wampmanager.exe

pushd ..\..\server\login
call startLoginServer.bat

pushd ..\test
call startTestServer.bat

start "C:\DEV\P2\Test\client" P2.bin

问题是call startLoginServer.bat 不会退出,因此我被困在这里。

如何运行我的 2 个 .bat 文件并让它们继续运行。 (理想情况下,我希望它们在 2 个不同的命令提示符窗口中运行)

另外,如果你能纠正我的话,可能有比使用pushd 更好的方法来处理相对路径。

谢谢

【问题讨论】:

  • 您可以使用Start 而不是Call,如果您不希望仅在批处理文件关闭时将控制权传回。如果您查看帮助用法,Start /?,您可以在必要时使用/D 选项来设置工作目录。如果您不需要更改工作目录,您可以直接Start 批处理文件,例如Start ..\..\server\login\startLoginServer.batStart ..\test\startTestServer.bat.

标签: powershell batch-file cmd


【解决方案1】:

你可以使用:

start "Wamp Manager" /B /D"%~dp0tools\wamp64" wampmanager.exe
start "Login Server" /B /D"%~dp0server\login" startLoginServer.bat
start "Test Server"  /B /D"%~dp0server\test"  startTestServer.bat
start "Text Client"  /B /D"%~dp0" "C:\DEV\P2\Test\client.exe" P2.bin

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

  1. "..." ... 新控制台窗口的标题是可选的,但通常必须在用双引号括起来的任何其他参数上指定。有问题的批处理文件代码中最后一个命令行中的 START 命令将C:\DEV\P2\Test\client 解释为窗口标题。也可以使用空的窗口标题,即"",如果启动的应用程序是一个根本不打开控制台窗口的 Windows GUI 应用程序,这是最好的。

  2. /B ... 在不打开新窗口的情况下运行,即在“背景”中。如果可执行文件不是 Windows GUI 应用程序,则可以省略此选项以查看启动的应用程序和批处理文件输出到控制台的内容。

  3. /D"..."/D "..." 定义在运行下一个指定的命令之前首先设置为当前目录的目录。 %~dp0 引用包含此命令的批处理文件的目录。此路径始终以反斜杠结尾。因此,在将批处理文件的目录与文件或文件夹名称或路径连接时,不得添加反斜杠。

在命令提示符窗口call /? 中运行以获取有关此命令的帮助,该命令还解释了如何从批处理文件中引用批处理文件的参数。

另请参阅How to call a batch file that is one level up from the current directory? 上的回答,总共解释了从批处理文件调用或启动批处理文件的 4 种不同方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-02
    • 2023-04-10
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    相关资源
    最近更新 更多