中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 问题请教:一个DOS窗口怎样知道另一个DOS窗口已关闭
作者:
标题: 问题请教:一个DOS窗口怎样知道另一个DOS窗口已关闭 上一主题 | 下一主题
rgbsky
新手上路





积分 4
发帖 1
注册 2008-4-4
状态 离线
『楼 主』:  问题请教:一个DOS窗口怎样知道另一个DOS窗口已关闭

我有一个程序要运行2个dos窗口(称为A和B),其中A要等B执行完才继续执行。但B是要用"CTRL+C"来关闭的,请问这时有什么办法来让A知道B已经关闭?

-----
如果B是正常退出,我会想到B中用一个临时作标志,A中判断该文件就可以了。但B要用CTRL+C来关闭,请高手支招。。。。

第一次上DOS联盟,慕名而来。。。希望不会让我失望。。。谢谢大家!!!

2008-4-5 16:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 2 楼』:  

运行环境?
DOS窗口?CMD窗口?win2000?winxp?



第一高手    第二高手

2008-4-5 16:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
DOS95
初级用户





积分 112
发帖 49
注册 2006-9-23
状态 离线
『第 3 楼』:  

我想可以在 A 中用 tasklist 列进程,用 find 看有几个 cmd 在运行,循环检测,当只有一个 cmd 就可以认为 B 被关闭了,然后该做什么就可以做了

2008-4-7 05:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yyqheaven
新手上路





积分 14
发帖 6
注册 2008-3-6
状态 离线
『第 4 楼』:  

我也不清楚,顶一下

2008-4-7 14:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jiulong
中级用户




积分 396
发帖 183
注册 2007-12-23
状态 离线
『第 5 楼』:  

如果根据进程的话是做不到的,两个进程都是cmd.exe
不知道如何判断,等待高手答复吧

2008-4-9 03:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 6 楼』:  

下面代码适合XP
@echo off
>B.bat echo mode con cols=18 lines=6
>>B.bat echo pause
start  "" B.bat

:xxx
Wmic Process Where "Name='cmd.exe'" Get CommandLine>tmp.txt
find /i "B.bat">nul tmp.txt
if %errorlevel%==0 (echo 没关闭) else echo 已关闭
ping -n 3 127.0.1>nul
goto xxx




第一高手    第二高手

2008-4-9 13:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chishingchan
银牌会员




积分 1282
发帖 538
注册 2002-11-2
状态 离线
『第 7 楼』:  

六楼的代码不断循环显示没关闭,关闭后循环显示关闭,按右上角的红X,机器蓝屏!

2008-4-17 08:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
cusa
新手上路





积分 2
发帖 1
注册 2007-6-7
状态 离线
『第 8 楼』:  

我的倒不兰屏。。不过也是不行

2008-4-18 11:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
DOS95
初级用户





积分 112
发帖 49
注册 2006-9-23
状态 离线
『第 9 楼』:  

这是我的示范代码,LZ可以参考一下:

tasklist|find/c "cmd.exe"|find "2"             ;;判断是不是有2个CMD窗口
if errorlevel==1 goto 1cmdwindow          ;;返回0时是2个CMD,1时不是
echo B.bat working...
goto batend
:1cmdwindow
echo B.bat close
:batend

2008-4-20 08:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: