在windows用perl运行exe

现在做的一个项目,刚刚完成了所有组件的编译链接,运行也没问题。

但是每次运行看效果都得双击六个程序(四个窗口程序和二个命令行程序)。

就想着能不能做一个批处理一次运行了。

先想到的是bat脚本,但因为有两个命令行程序,且都是那种死循环不退出的那种,这造成在bat中开了第一个时卡住不运行第二个。

在网上找了一下关于如何让其后台运行的资料,都是关于VB方面的。

后来想PERL对于这种应该是小菜一碟吧,先在网上找,找到

1 system("Client.exe print");

和上面bat的问题一样。

后来把PERL的帮助文档打开,一看就看到了Win32::Process.

直接把例子COPY下来就能运行了。

但还是有两个问题:

1. 两个命令行程序都同时运行在一个命令窗口中.(和之前bat问题一样)

2. 一些窗口程序本来是可以带入参数,但就是不能正常运行。

 1 #!/usr/bin/perl
 2 
 3 use Win32::Process;
 4 use Win32;
 5 sub ErrorReport{
 6 print Win32::FormatMessage( Win32::GetLastError() );
 7 }
 8 Win32::Process::Create($ProcessObj1, "Client.exe", "", 
 9                     0, NORMAL_PRIORITY_CLASS, ".")|| die ErrorReport();
10 sleep(5);
11 Win32::Process::Create($ProcessObj2, "GndSystem.exe", "",
12                      0, NORMAL_PRIORITY_CLASS, ".")|| die ErrorReport();
13 sleep(5);
14 Win32::Process::Create($ProcessObj3, "LmiInterface.exe", "",
15                      0, NORMAL_PRIORITY_CLASS, ".")|| die ErrorReport();
16 sleep(5);
17 Win32::Process::Create($ProcessObj4, "Monitor.exe", "",
18                      0, NORMAL_PRIORITY_CLASS, ".")|| die ErrorReport();
19 sleep(5);
20 #Win32::Process::Create($ProcessObj6, 'C:\Sim.exe', 'PACARS.sim', 0, NORMAL_PRIORITY_CLASS, 'C:\SecureACARS\Database')|| die ErrorReport();
21 system('C:\Sim.exe PACARS.sim');

另附上请空log文件的perl脚本:

1 #!/usr/bin/perl
2 
3 open $Log, '> C:\GPAComm.log';
4 close $Log;
5 open $Log, '> C:\CoreError.log';
6 close $Log;
7 open $Log, '> C:\GPAError.log';
8 close $Log;
http://www.tianming.me/?p=830