批处理命令中怎样实现按顺序执行3个exe 跪求指点...
原来的要求是:按顺序执行3个exe,就是说1.exe执行完关闭后再打开2.exe运行,以此类推,所以我的脚本大体如下:start/waitc:\1.exestart/wa...
原来的要求是:按顺序执行3个exe,就是说1.exe执行完关闭后 再打开2.exe运行,以此类推,所以我的脚本大体如下:
start/wait c:\1.exe
start/wait c:\2.exe
start/wait c:\3.exe
pause
exit
这里请注意:1.exe 2.exe 3.exe 运行完成后会自动关闭的。这样测试下来没什么问题。
现在又有新的要求:要在保持原来逻辑顺序不变得情况下,在执行1.exe后(大概10秒等待吧) 运行trace.exe(trace.exe是用来记录1.exe,2.exe,3.exe运行的结果的) ,然后等1.exe 自动运行完关闭后,关闭trace.exe(用taskkill trace.exe,这个我知道)。2.exe和3.exe同样的要求。归纳一下大体逻辑是:1.运行1.exe; 2.等待10秒运行trace.exe; 3.等待1.exe执行过程,直到1.exe自动关闭,然后关闭trace.exe; 4.运行2.exe; 5.等待10秒运行trace.exe;3.等待2.exe执行过程,直到2.exe自动关闭,然后关闭trace.exe;...........
现在的问题是:已经用了/wait参数了,那么如何在执行1.exe后(大概10秒等待吧)运行trace.exe???如果按照原来的方法行不通,那么还有其他好办法吗?金融危机下混口饭吃不容易,搞不定要被公司咔嚓了,所以小弟跪求高人指点。。诚心请各位指教。。小弟把积分全部给你了 展开
start/wait c:\1.exe
start/wait c:\2.exe
start/wait c:\3.exe
pause
exit
这里请注意:1.exe 2.exe 3.exe 运行完成后会自动关闭的。这样测试下来没什么问题。
现在又有新的要求:要在保持原来逻辑顺序不变得情况下,在执行1.exe后(大概10秒等待吧) 运行trace.exe(trace.exe是用来记录1.exe,2.exe,3.exe运行的结果的) ,然后等1.exe 自动运行完关闭后,关闭trace.exe(用taskkill trace.exe,这个我知道)。2.exe和3.exe同样的要求。归纳一下大体逻辑是:1.运行1.exe; 2.等待10秒运行trace.exe; 3.等待1.exe执行过程,直到1.exe自动关闭,然后关闭trace.exe; 4.运行2.exe; 5.等待10秒运行trace.exe;3.等待2.exe执行过程,直到2.exe自动关闭,然后关闭trace.exe;...........
现在的问题是:已经用了/wait参数了,那么如何在执行1.exe后(大概10秒等待吧)运行trace.exe???如果按照原来的方法行不通,那么还有其他好办法吗?金融危机下混口饭吃不容易,搞不定要被公司咔嚓了,所以小弟跪求高人指点。。诚心请各位指教。。小弟把积分全部给你了 展开
2个回答
展开全部
“运行文件、监控运行、监控结束”三进程搞定你的问题
1主程序进程(保存到go.bat)
@echo off
::监控运行
start /b cmd /c st.bat
::监控结束
start /b cmd /c dt.bat
::运行文件
for %%i in (1 2 3) do start /wait "" %n%.exe
2进程监控运行(保存到st.bat)
@echo off
::命令开关:判断本脚本是否运行下去。
:nogo
tasklist>st.txt
find "1.exe" st.txt||goto nogo
for %%i in (1 2 3)do (
:ag
::判断123是否运行中,【是】等待10秒运行trace.exe,【否】等待
tasklist>st.txt
find "%n%.exe" st.txt||goto ag
::等待10秒
ping -n 10 127.1>nul
::运行trace.exe
start "" trace.exe
)
3进程监控结束(保存到dt.bat)
@echo off
::命令开关:判断本脚本是否运行下去。
:nogo
tasklist>dt.txt
find "1.exe" dt.txt||goto nogo
for %%i in (1 2 3)do (
:ag
::判断123是否运行中,【是】继续监控,【否】结束trace.exe
tasklist>dt.txt
find "%n%.exe" dt.txt||taskkill /f /im "trace.exe">nul
::继续监控
goto ag
)
没测试过,路径自己写全吧自己试吧。
1主程序进程(保存到go.bat)
@echo off
::监控运行
start /b cmd /c st.bat
::监控结束
start /b cmd /c dt.bat
::运行文件
for %%i in (1 2 3) do start /wait "" %n%.exe
2进程监控运行(保存到st.bat)
@echo off
::命令开关:判断本脚本是否运行下去。
:nogo
tasklist>st.txt
find "1.exe" st.txt||goto nogo
for %%i in (1 2 3)do (
:ag
::判断123是否运行中,【是】等待10秒运行trace.exe,【否】等待
tasklist>st.txt
find "%n%.exe" st.txt||goto ag
::等待10秒
ping -n 10 127.1>nul
::运行trace.exe
start "" trace.exe
)
3进程监控结束(保存到dt.bat)
@echo off
::命令开关:判断本脚本是否运行下去。
:nogo
tasklist>dt.txt
find "1.exe" dt.txt||goto nogo
for %%i in (1 2 3)do (
:ag
::判断123是否运行中,【是】继续监控,【否】结束trace.exe
tasklist>dt.txt
find "%n%.exe" dt.txt||taskkill /f /im "trace.exe">nul
::继续监控
goto ag
)
没测试过,路径自己写全吧自己试吧。
展开全部
@echo off
for %%a in (diyi dier disan) do (
start "" "%%a.exe"
ping -n 10 127.0.1>nul
start "" "trace.exe"
call :jianche %%a
)
goto :eof
:jianche
tasklist|find/i "%1.exe">nul
if %errorlevel% equ 0 ping -n 5 127.0.1>nul & goto :jianche
taskkill /f /im "trace.exe">nul
goto :eof
保存为.bat执行就可以了..
其中在for 循环里面的
diyi dier disan
这些是你要执行的三个程序的程序的名字,,你自己修改,,按顺序来...
然后这样就可以了...
for %%a in (diyi dier disan) do (
start "" "%%a.exe"
ping -n 10 127.0.1>nul
start "" "trace.exe"
call :jianche %%a
)
goto :eof
:jianche
tasklist|find/i "%1.exe">nul
if %errorlevel% equ 0 ping -n 5 127.0.1>nul & goto :jianche
taskkill /f /im "trace.exe">nul
goto :eof
保存为.bat执行就可以了..
其中在for 循环里面的
diyi dier disan
这些是你要执行的三个程序的程序的名字,,你自己修改,,按顺序来...
然后这样就可以了...
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询