【问题标题】:How would I make a time limit before a certain command is carried out while letting the use interface with the current commands?如何在执行某个命令之前设置时间限制,同时让当前命令使用接口?
【发布时间】:2014-02-15 04:26:33
【问题描述】:

我想知道如何在后台执行“ping 1.1.1.1 -n 1 -w 20000 > nul”,当它完成时 goto 失败,而用户仍然能够使用一组不同的命令。

示例)

我希望用户这样做...

:start
set /p input=-
if %input%==ping goto ping
goto start

当这种情况发生时......

ping 1.1.1.1 -n 1 -w 20000 > nul
goto exit

并让上面的脚本在后台运行。

【问题讨论】:

  • IP 1.1.1.1 现在被 CloudFlare 占用了,所以这不会等待 20 秒,而是在一些毫秒后返回。

标签: loops batch-file


【解决方案1】:

您可以使用start 命令启动单独的 cmd 进程。该进程将在后台运行,但会弹出一个单独的窗口,并且无法与您当前正在运行的批处理文件进行交互(例如,除非您让它们通过临时文件之类的方式进行通信)。

语法是

start cmd /c [command]

所以对于你的例子,它可以是

start cmd /c ping 1.1.1.1 -n 1 -w 20000 > nul

当然,goto 不起作用,因为它不会在当前批处理文件的上下文中运行。但是您可以创建另一个批处理文件,或向您的批处理文件添加命令行参数以控制执行流程,然后将其作为您的命令运行。

【讨论】:

  • 谢谢,我想旧的临时文件必须这样做。
  • 没问题!如果这有帮助,请考虑将其标记为答案。
猜你喜欢
  • 2021-05-04
  • 2018-12-09
  • 2018-11-25
  • 1970-01-01
  • 2011-08-10
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
相关资源
最近更新 更多