【问题标题】:Creating a batch script to shut down machine after multiple restart or stopping of services创建批处理脚本以在多次重新启动或停止服务后关闭机器
【发布时间】:2017-12-18 01:45:00
【问题描述】:

我创建了一个batch 脚本,它能够在多次重新启动或停止特定窗口服务后关闭机器。

但是,我不知道如何使脚本自动运行而不是手动运行。我已经尝试通过在services.msc 下设置脚本文件并将其设置为 run a program (batch file) 在此特定窗口服务下的后续故障但当我手动停止或重新启动服务 3 次后,测试脚本文件,批处理脚本根本没有运行。

所以我认为services.msc 可能只在运行脚本之前识别失败,而不是停止或重新启动服务。如果是这样,还有其他方法可以运行脚本吗?

这是我的批处理脚本:

sc query "AVG Antivirus" | find "STOPPED" 
    if "%ERRORLEVEL%"=="3" 
    (
        shutdown.exe /s /t 00
    )

【问题讨论】:

  • 我删除了bash 标签,因为这个问题根本与 Unix 无关

标签: windows batch-file


【解决方案1】:

%errorlevel% 不“计数” - 它总是为“成功”提供0NOT 0(通常为1,但取决于命令)。所以你必须实现一个自己的计数器:

set count=0
:loop
  sc query "AVG Antivirus" | find "STOPPED" && set /a count+=1
  if %count% geq 3 goto :continue
  timeout /t 5
goto :loop
:continue
shutdown.exe /s /t 00

|| 相当于“如果之前的命令(这里是find)失败了”(相反的是&&“如果之前的命令成功了”)

我不确定您是否需要该服务正在运行或停止。区别只是使用&&||)

【讨论】:

    猜你喜欢
    • 2017-08-07
    • 2015-04-27
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    相关资源
    最近更新 更多