需求:用Python实现多路径run.cmd文件按指定时长运行
解决多CMD文件按指定时长执行的问题
原代码存在的问题
- 未导入
time模块,执行时会触发NameError os.system()会阻塞程序直到CMD命令执行完成,之后才执行sleep,不符合“按指定时长执行”的需求- 未将CMD路径与对应执行时长关联,逻辑混乱
解决方案
根据需求分两种场景实现:
场景1:启动每个CMD后,等待指定时长再启动下一个(不终止已启动进程)
适合需要依次启动、每个启动后间隔指定时间再启动下一个的场景:
import subprocess import time # 绑定每个CMD路径和对应的等待时长(秒) cmd_tasks = [ (r"C:\path\run1.cmd fast", 40), (r"C:\path\run2.cmd fast", 20), (r"C:\path\run3.cmd fast", 30) ] for cmd_path, wait_time in cmd_tasks: # 启动CMD进程,不阻塞主程序 subprocess.Popen(cmd_path, shell=True) # 等待指定时长后启动下一个任务 time.sleep(wait_time)
场景2:限制每个CMD最多运行指定时长,超时自动终止
适合需要严格控制每个CMD运行时长,超时就结束进程的场景:
import subprocess import time cmd_tasks = [ (r"C:\path\run1.cmd fast", 40), (r"C:\path\run2.cmd fast", 20), (r"C:\path\run3.cmd fast", 30) ] for cmd_path, run_duration in cmd_tasks: # 启动CMD进程 proc = subprocess.Popen(cmd_path, shell=True) # 等待指定时长 time.sleep(run_duration) # 如果进程仍在运行,终止它 if proc.poll() is None: proc.terminate() # 若terminate无法终止,可改用强制杀死 # proc.kill()
关键说明
- 使用
subprocess.Popen替代os.system,可以灵活控制进程的启动与终止,避免主程序阻塞 - 将CMD路径与对应时长绑定为元组,逻辑更清晰,便于维护修改
内容的提问来源于stack exchange,提问作者Arbaz ali
相关产品推荐
相关产品推荐

