我有一个充满脚本文件的文件夹。当我运行它们时,会打开它们本机的程序,它会执行一些操作并生成CSV文件。我写了一些代码,我想运行每个脚本文件并生成一堆CSV文件,每个脚本一个。
以下情况如下:执行我的Perl应用程序时,将启动软件并成功运行第一个脚本(创建CSV文件)。但是,在此步骤中,Perl应用程序在我继续之前等待我关闭软件。它为每个脚本执行此操作。我该怎么做才能避免这种情况发生?
use strict;
use warnings;
use Cwd;
my $dir = cwd();
opendir(DIR, $dir);
my @files= grep(/\.acs$/,readdir(DIR));
$dir=~s/\//\\/g;
chdir $dir;
foreach (@files)
{
print "$_\n";
system ("$_")
}
答案 0 :(得分:1)
我认为你需要fork和exec以及waitpid - 即设置并运行你自己的进程并等待它自己完成。
http://larc.ee.nthu.edu.tw/~cthuang/courses/ee2320/12_process.html
这并不容易,但遗憾的是,您在不适合脚本的操作系统上执行此操作。在Linux或OS X下执行此操作,您不会有这样的麻烦。
您需要弄清楚这些命令是否在Windows下可用。如果没有posix兼容库,您可能必须找到一些Windows下可用的类似内容。
答案 1 :(得分:1)
你最好的选择是在应用完成后很好地要求应用程序关闭。 例如,cmd.exe命令具有完全相同的参数/ C.
尝试使用/?运行应用程序,看看是否有任何有用的东西。
如果失败了,您可以使用Win32 :: Process创建进程,然后在确定完成后将其终止。请参阅相关文档。