在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

你可能感兴趣的:(windows)