Perl脚本不等待.bat文件完成并继续执行

时间:2016-07-20 11:48:08

标签: perl

我从perl脚本调用bat文件 由于bat文件需要很长时间才能执行,因此perl脚本不会等待bat文件完成并从下一行继续执行。

有没有办法可以暂停执行perl脚本,直到bat文件完成执行,然后在bat文件完成后恢复。

我写了这样的话:

system ("start $bat_file");
print ("Hello");

所以即使在bat文件完成之前它也会打印hello。

实际上我想要完成的是:

  1. 我的bat文件创建了一些文件
  2. 我想在bat文件完成后将这些文件复制到另一个位置。
  3. 但由于它没有等待bat文件完成,因此复制失败,因为它试图复制一个不存在的文件夹,因为bat文件仍在处理中并且没有生成输出文件。

    注意:完成bat文件的时间不固定,每次都会更改。

2 个答案:

答案 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");`

Start Manual

相关问题