【问题标题】:Repeatedly execute a Windows command from a batch file?从批处理文件重复执行 Windows 命令?
【发布时间】:2012-07-14 22:33:07
【问题描述】:

我对 Windows 的批处理文件不太熟悉,所以这似乎是一个初学者的问题。我怎样才能“循环”或重复以下命令?

shutdown -a

【问题讨论】:

  • 您想重复固定次数吗?重复它直到出现某种情况?或者,如果你能解释你想要实现的更广泛的目标,也许它会更有用。
  • @reuben - 我身边有人在工作,他喜欢在我的终端上玩耍并按下电源按钮。当他这样做时,我打开运行框并输入“shutdown -a”命令,但大约 50% 的时间计算机已经过了返回点并且无法停止关闭,所以我想我只是不断循环。
  • 很抱歉听到您必须处理这个问题!您是否考虑过改变 PC 对按下电源按钮的反应方式?按住重置按钮几秒钟通常无法取消,但快速按下可能会被软件中断...
  • @reuben - 嗯,这是一个很好的解决方案。感谢您的建议

标签: windows loops batch-file cmd shutdown


【解决方案1】:

我同意评论者@reuben 的观点,你可能应该寻找其他选项(包括让那个同事自己“修复”),但无论如何这里是一种重复运行命令的方法:

:loop
shutdown -a
goto loop

请注意,这可能仍会留下一个窗口,它无法取消关闭,因为它不够“快”。

它还会对您的系统造成“轻微恐惧”,至少在csrss.exe(或conhost.exe)进程中是这样,因为控制台窗口将忙于打印消息。因此,您可能希望至少重定向输出 (shutdown -a > NUL 2>&1) 和/或在调用 shutdown 之间引入一些 delay。当然,后者会显着增加不“捕获”关闭的风险。

总而言之,这不是解决您问题的好方法。对不起。

【讨论】:

    【解决方案2】:

    您是否要关闭多台远程计算机?您可以编写一个 ssh 到每台机器的脚本并将其发送关闭命令:

    ssh user1@remote_computer1 shutdown
    ssh user2@remote_computer2 shutdown
    ...
    

    如果您的意思是在同一台计算机上循环关闭命令,您可以将关闭命令放在 ~/.bashrc 中,如果您真的想要的话。但请确保您有充分的理由这样做。

    【讨论】:

    • 您是否假设 OP 在相关 Windows 机器上安装了 sshbash 和其他 Unix 工具?
    • @LMC - 至少在 Windows 上没有“Shutdown -a”是一个中止关机的命令
    • @Reuben - 除非 Windows 预先安装了它们,否则它们可能不会在计算机上,我认为添加内容会遇到麻烦
    • 你是完全正确的。我不知道我怎么会错过问题中的“Windows”一词。对此感到抱歉。
    猜你喜欢
    • 1970-01-01
    • 2018-12-25
    • 2013-07-23
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多