minchengan 发表于 2022-7-12 14:33:43

请教:如何在一个程序执行结束后再执行另一个程序?(已解决)

本帖最后由 minchengan 于 2022-7-13 10:34 编辑

最近在PE中使用TrafficMonitor,在任务栏显示网络流量和CPU及内存等的占用,同时也用了DrvIndex.exe搜索并安装驱动,现在需要在DrvIndex.exe结束运行后才执行TrafficMonitor,这两条命令分别是:
FORX !\PETOOLS\Drivers\DrvIndex.exe,&dev,1,EXEC -wd:* %&dev% -h
EXEC !%ProgramFiles%\TrafficMonitor\TrafficMonitor.exe
如何让前一条命令执行完成再执行另一条命令而不影响其他别的后续命令的执行?因DrvIndex.exe执行太久了。对pecmd的命令不太熟,
还是用TEAM wait 30000|EXEC !%ProgramFiles%\TrafficMonitor\TrafficMonitor.exe解决,虽然不完美,但也还可以。

已用M大的代码完美解决。



红毛樱木 发表于 2022-7-12 14:47:07

EXEC -wait

minchengan 发表于 2022-7-12 15:03:27

红毛樱木 发表于 2022-7-12 14:47
EXEC -wait

感谢红毛大佬的回复。用EXEC -wait执行DrvIndex吗?这个程序搜索并安装驱动的过程会很久,会不会阻塞其他程序的运行,如果不会阻塞的话,那应该也阻塞不了TrafficMontor的运行了,还是达不到目的。这个我试一试先

minchengan 发表于 2022-7-12 15:24:37

两种方法需要研究一下:
一是,EXEC -cmd:[:ms:]CMD
二是,不知有没有在一个程序执行完成或一条PECMD命令执行结束返回参数给一个变量,通过读这个变量来判断是否执行另一个程序

红毛樱木 发表于 2022-7-12 21:06:09

minchengan 发表于 2022-7-12 15:24
两种方法需要研究一下:
一是,EXEC -cmd:[:ms:]CMD
二是,不知有没有在一个程序执行完成或一条PECMD命令 ...

用--pid返回一个进程pid,通过pid判断呢?

826773297 发表于 2022-7-12 21:10:57

我不知道楼主是会编程故意搞复杂,还是不会编程,这么简单的语法很容易就能写出来


FORX !\PETOOLS\Drivers\DrvIndex.exe,&dev,1,EXEC =%&dev% -h
EXEC !%ProgramFiles%\TrafficMonitor\TrafficMonitor.exe

直接等待执行完成进行下一命令就行了,你还搞什么wait命令等待,建议多看看pecmd帮助

minchengan 发表于 2022-7-12 21:35:14

本帖最后由 minchengan 于 2022-7-12 21:37 编辑

826773297 发表于 2022-7-12 21:10
我不知道楼主是会编程故意搞复杂,还是不会编程,这么简单的语法很容易就能写出来



此方法不妥,如果驱动包太大太多,会阻塞很久,PE启动会很慢

minchengan 发表于 2022-7-12 21:36:56

红毛樱木 发表于 2022-7-12 21:06
用--pid返回一个进程pid,通过pid判断呢?

我在较后面用TEAM wait 15000|EXEC ......,这样不会太影响重要程序的运行,凑合可用

826773297 发表于 2022-7-12 21:41:58

minchengan 发表于 2022-7-12 21:35
此方法不妥,如果驱动包太大太多,会阻塞很久,PE启动会很慢

处理时间较长的命令都是放在进入桌面后。调用时机要把握好

红毛樱木 发表于 2022-7-12 22:54:35

minchengan 发表于 2022-7-12 21:35
此方法不妥,如果驱动包太大太多,会阻塞很久,PE启动会很慢

想法冲突,对程序来说就是错的。

mo_shaojie 发表于 2022-7-13 00:02:52

红毛樱木 发表于 2022-7-12 22:54
想法冲突,对程序来说就是错的。

说中要害。

mdyblog 发表于 2022-7-13 07:56:47

试试:

ENVI^ EnviMode=1
EXEC "%&MyName%" TEAM FORX !\PETOOLS\Drivers\DrvIndex.exe,&dev,1,EXEC -wait -wd:* %%&dev%% -h| EXEC !"%%ProgramFiles%%\TrafficMonitor\TrafficMonitor.exe"
///后续命令....

minchengan 发表于 2022-7-13 09:46:50

mdyblog 发表于 2022-7-13 07:56
试试:

ENVI^ EnviMode=1


感谢回复。这个写法真正达到了目的。只有流量监控程序在等待驱动安装程序的完成,而后续命令都没有被阻塞。这才是我要的结果。非常感谢。你太厉害了

mdyblog 发表于 2022-7-13 10:07:25

minchengan 发表于 2022-7-13 09:46
感谢回复。这个写法真正达到了目的。只有流量监控程序在等待驱动安装程序的完成,而后续命令都没有被阻塞 ...

那好。

nowayer 发表于 2023-11-9 13:59:17

页: [1]
查看完整版本: 请教:如何在一个程序执行结束后再执行另一个程序?(已解决)