如何让Ruby脚本等待bat文件(系统命令)执行完成?
Ruby调用bat文件时等待其执行完成的解决方法
先排查bat文件本身:如果你的bat里用了
start命令启动外部程序,默认会直接返回导致bat提前结束。给start加上/wait参数,比如把start app.exe改成start /wait app.exe,这样bat会等待启动的程序跑完再退出。换用Ruby的反引号或
%x()执行:这两种方式默认会阻塞当前脚本,直到命令执行完成,写法:%x(path/to/file.bat) # 或者 `path/to/file.bat`用spawn+Process.wait组合:手动启动子进程并等待其结束,适合更灵活的进程控制:
pid = spawn('path/to/file.bat') Process.wait(pid)注意路径格式:如果bat文件路径包含空格,要给路径加双引号,避免解析错误:
system('"C:/Program Files/My Scripts/run.bat"')
内容的提问来源于stack exchange,提问作者Samuel Preetham
相关产品推荐
相关产品推荐

