.BAT 文件在 Windows 更新后继续打开无限实例

.BAT file keeps opening unlimited instances after Windows Update

所以这个 bat 文件 运行 正好在最近的 windows 更新之前。

@Echo off
:Start
Start E:\directoryhere?listen -dedicated
echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost
goto Start

所以这将启动一个专用服务器。将弹出命令提示符。当所有人离开服务器或游戏结束时,命令提示符将关闭,然后 .bat 文件将重新打开它。现在,在此更新之后,.bat 文件在打开时一直打开 cmd 提示符。所以我会立刻打开 20 个实例,我的 cpu 是 100%。

我在 windows 更新之前也有这段代码,但最终做同样的事情。

@echo off
cd "E:\directoryhere\"
:loop
Start RxGame-Win64-Test.exe server lv_canyon?listen -dedicated | set /P "="
goto loop

该代码曾经有效,但 2 window 更新之前最终做同样的事情。它只会继续打开实例并使我的 cpu 100%。

有什么方法可以确保查看 cmd 提示符是否打开并且不重新打开它并保持它运行直到 cmd 提示符关闭然后重新打开它。

对此可以进行简单的修复,以检查进程是否已首先使用 tasklist 打开。请确保您搜索了您的实际应用程序的名称。对于这个例子,我猜它叫做 RxGame-Win64-Test.exe。下面是一些脚本选项。

下面的脚本将检查 RxGame-Win64-Test.exe 应用程序在启动另一个应用程序之前是否先打开:

@ECHO OFF
@SETLOCAL enabledelayedexpansion
GOTO LOOP

:LOOP

Rem | Check If Window Is Open
tasklist /FI "IMAGENAME eq RxGame-Win64-Test.exe" 2>NUL | find /I /N "RxGame-Win64-Test.exe">NUL
if not "%ERRORLEVEL%"=="0" (

    Rem | Process Not Found
    timeout /T 10 /NOBREAK

    Rem | Restart Server
    start "" "RxGame-Win64-Test.exe server lv_canyon?listen -dedicated"

    Rem | GOTO LOOP
    GOTO LOOP

)

GOTO LOOP

不确定 RxGame-Win64-Test.exe 是否是基于 CMD 的程序,但如果是,下面的脚本将帮助您:

@ECHO OFF
@SETLOCAL enabledelayedexpansion

Rem | First Load, Start Server
start "DedicatedServerLauncher" cmd /c "RxGame-Win64-Test.exe server lv_canyon?listen -dedicated"

GOTO LOOP

:LOOP

Rem | Reset PID
Set "PID="

Rem | Grab The Current Window PID
FOR /F "tokens=2" %%# in ('tasklist /v ^| find "DedicatedServerLauncher" ^| find "Console"') do set PID=%%#

Rem | Check If Window Is Open
if "!PID!"=="" (

    Rem | Process Not Found
    timeout /T 10 /NOBREAK

    Rem | Restart Server
    start "DedicatedServerLauncher" cmd /c "RxGame-Win64-Test.exe server lv_canyon?listen -dedicated"

    Rem | GOTO LOOP
    GOTO LOOP
)

GOTO LOOP

如需任何命令的帮助,请执行以下操作:

  • call /?
  • set /?
  • for /?
  • if /?
  • find /?
  • 等等。