中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-13 00:01
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS学习入门 & 精彩文章 (教学室) » 怎么判断在批处理中程序是否已经运行?
可打印版本  1,174 / 5
第1楼 daiddcc 发表于 2003-09-02 00:00
初级用户 发帖 22 积分 175
怎么判断在批处理中程序是否已经运行?
想编一批处理。 带几个参数, 其中有几个是单独项,另几个必须是在ucdos运行后再运行的。 这样会产生一个问题,如果将
\ucdos\rd16
\ucdos\knl
放在前面,那么不需要运行ucdos的那几项也必须得在运行ucdos后再运行,很讨厌。如果ucdos不放在前面,那几个必须运行在ucdos下的程序就得每项都加上\ucdos\rd16 ; \ucdos\knl 。有些重复和累赘。而且这几项就会重复运行ucdos,即管ucdos运行一次就够了。
有什么好办法来解决么?
可不可以在处理中作一判断,判断ucdos是否已运行?
第2楼 红色狂想 发表于 2003-09-03 00:00
金牌会员 发帖 1,501 积分 4,289 来自 河南省
虽然我对批处理不太行,但我可以给你一些编程的思路。你可以在执行时产生临时文件做为标记呀,然后再在需要处理的地方做条件判断,以便执行不同的操作。
第3楼 willsort 发表于 2003-09-06 00:00
元老会员 发帖 1,512 积分 4,432
Re daiddcc:

你的问题说的不是很清楚。按照我的理解,你想将不需要ucdos的程序项与需要ucdos的程序项混杂运行,但是觉得ucdos频繁开关很麻烦。

首先分析问题,要避免ucdos频繁开关所造成的代码冗余,可以将开关ucdos的代码单独写为一个批处理,然后在需要ucdos的程序项前后直接用call调用就行了;如果想避免执行过程的冗余,则需要具体问题具体分析,首先将需要ucdos的程序项和不需要ucdos的程序项分离,然后放在两个大模块中,在ucdos大模块中首先执行ucdos,然后在根据参数开关跳转到需要执行的具体模块中。

另外,判断ucdos是否已运行可以注册环境变量,通常比产生临时文件要好些:

::ucdos.bat
@echo off
\ucdos\rd16
\ucdos\knl
set ucdos=load

::application
@echo off
if "%ucdos%"=="" call ucdos.bat
if "%ucdos%"=="load" goto 需要ucdos的程序或ucdos卸载标签

第4楼 cn_archer 发表于 2003-09-06 00:00
元老会员 发帖 991 积分 2,903 来自 福建省
楼上的方法很实用啊!
第5楼 congcong 发表于 2003-09-09 00:00
初级用户 发帖 3 积分 112
好方法啊!
第6楼 daiddcc 发表于 2003-09-13 00:00
初级用户 发帖 22 积分 175
非常感謝!原來以爲不會有什麽好方法了,看來我對批處理的了解還非常不夠。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023