我从perl脚本调用bat文件 由于bat文件需要很长时间才能执行,因此perl脚本不会等待bat文件完成并从下一行继续执行。
有没有办法可以暂停执行perl脚本,直到bat文件完成执行,然后在bat文件完成后恢复。
我写了这样的话:
system ("start $bat_file");
print ("Hello");
所以即使在bat文件完成之前它也会打印hello。
实际上我想要完成的是:
但由于它没有等待bat文件完成,因此复制失败,因为它试图复制一个不存在的文件夹,因为bat文件仍在处理中并且没有生成输出文件。
注意:完成bat文件的时间不固定,每次都会更改。
答案 0 :(得分:9)
您需要删除start
命令
如果没有/wait
选项,start
将创建一个流程并立即返回
但根本不需要start
。你可以写
system($bat_file);
达到你要求的效果
答案 1 :(得分:2)
您遇到的问题是start command
而不是system
当您在Windows上使用start
命令时,它将启动您的程序,但不会等待结束。
您必须在/wait
之后使用start
在您的代码中,它将是:
system ("start /wait $bat_file");
print ("Hello");`