【问题标题】:Loop and wait batch file循环并等待批处理文件
【发布时间】:2018-09-10 21:51:54
【问题描述】:

我制作了一个带有 start /wait 的批处理脚本,并检查它是否再次运行。如果不去关闭脚本,如果它再次运行,再次等待但它不起作用,它会一遍又一遍地启动程序。

谁能告诉我该怎么做?

@ECHO OFF
:START
START /WAIT "" "C:\Program Files (x86)\Steam\Steam.exe" -bigpicture
timeout /t 10 > nul
tasklist | find /I "Steam"
if errorlevel 1 (
    START C:\Scripts\shutdown.vbs
) else (
    GOTO START
)
EXIT

【问题讨论】:

  • find 将设置errorlevel0,否则为1 或更大。如果找不到steam,您的代码将运行关闭,否则重新启动。 ??你不应该先检查进程并在它存在时喊它然后重新启动它吗?真的 - 你对你想要做什么的描述令人困惑。
  • 问题是当 Steam 更新时它会关闭。然后它等待如果它回来更新如果没有关闭否则再次等待。但现在它将永远循环。但它必须再次等待
  • @Pascal,很明显你是在bigpicture 模式下启动steam.exe,但从那时起一切都变得不清楚了。您似乎想关闭 PC 或重新启动 Steam,但我们不知道您为什么或在哪些情况下希望这样做。我假设在启动时执行不可绕过的更新检查,如果发现程序关闭,更新并重新打开,但不是bigpicture 模式;这就是你想要检测的。请edit您的问题,以更好地解释您的问题并展示您迄今为止所做的尝试。
  • 顺便说一句,您可能需要的命令是,"C:\Program Files (x86)\Steam\Steam.exe" -start steam://open/bigpicture
  • 这是我在 steam steamos 模式和 bigpicture 中直接启动的命令。如果我方便地关闭它,它会等待,然后它会运行关闭脚本,或者如果 Steam 正在更新并返回并再次等待,它会关闭。我使用命令 -steamos -bigpicture 这可以正常工作并使退出菜单更小,没有返回 Windows 的选项,但是您可以在关闭时关闭 Steam,它将转到关闭脚本,但是当更新到但我希望他回到当 Steam 从更新中回来时开始

标签: loops batch-file wait


【解决方案1】:
@ECHO OFF

call :START
if errorlevel 1 call :START
exit /b

:START
start /wait "" "C:\Program Files (x86)\Steam\Steam.exe" -bigpicture
timeout /t 10 > nul
tasklist | find /i "Steam"
if not errorlevel 1 exit /b 1
start C:\Scripts\shutdown.vbs
exit /b 0

这将调用:STARTexit /b 带有以下整数将设置错误级别 0 或 1。如果 :START 设置错误级别 1,则对 :START 进行第二次调用。

这消除了goto :START 循环。

【讨论】:

  • 感谢您的反应,我会在我在家时测试这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 2012-09-16
  • 2023-03-23
  • 2023-04-08
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多