【问题标题】:Open file sleep then close infinite loop in batch?打开文件睡眠然后批量关闭无限循环?
【发布时间】:2016-07-23 16:31:54
【问题描述】:

我有这个批处理文件,它打开 4 个 cmd,然后转到相应的 文件夹并执行一些其他 bat 文件,然后执行 python 脚本。 我基本上想要这个批处理文件

:loop
start cmd.exe /k "cd C:\users\ivan\desktop\folder1 & call run.bat"
start cmd.exe /k "cd C:\users\ivan\desktop\folder2 & call run.bat"
start cmd.exe /k "cd C:\users\ivan\desktop\folder3 & call run.bat"
start cmd.exe /k "cd C:\users\ivan\desktop\folder4 & call run.bat"
goto loop

打开这 4 个 cmd,然后等待大约 30 分钟,然后关闭并再次打开它们,所以它看起来像这样

:loop
start cmd.exe /k "..."
sleep(1800000)
exit
goto loop

有人知道这是否可能吗?

【问题讨论】:

  • 有timeout命令做睡眠;
  • “关闭”是指杀死相关任务?如果是这样,您需要一种方法来识别正确的进程(通过tasklist 命令),获取其PID 并将其用于taskkill 命令;一种方法是指定一个唯一的窗口标题(通过title 命令)并使用tasklist /V 和find/findstr...
  • @aschipfl 我已经搞定了几乎所有事情,但问题是我不能使用 taskkill,因为每次我重新运行批处理文件时进程 PID 都会改变
  • 这就是我谈论窗口标题的原因;您需要为每个循环迭代获取 PID...
  • 见Re-opening files in Batch一些提示

标签: batch-file


【解决方案1】:
start "RunBat" /d "C:\users\ivan\desktop\folder1" call run.bat

在标题为RunBat 的新窗口中启动run.bat,工作目录为C:\users\ivan\desktop\folder1(不需要cd 命令)

timeout /t 1800 >nul

暂停执行 (30min*60sec) 1800 秒。 (>nul: 不显示计时器)

终于

taskkill /fi "WINDOWTITLE eq RunBat*"

杀死所有窗口标题以RunBat 开头的cmd 窗口(这样您就不需要PID)。 (给你所有的“子进程”一个相同的标题,这样你就可以用一个taskkill命令杀死它们;或者给它们一个独特的标题,以便能够单独杀死它们)

贴上标签和goto,就完成了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多