Board logo

标题: 怎么判断在批处理中程序是否已经运行? [打印本页]

作者: daiddcc     时间: 2003-9-2 00:00    标题: 怎么判断在批处理中程序是否已经运行?
想编一批处理。 带几个参数, 其中有几个是单独项,另几个必须是在ucdos运行后再运行的。 这样会产生一个问题,如果将
\ucdos\rd16
\ucdos\knl
放在前面,那么不需要运行ucdos的那几项也必须得在运行ucdos后再运行,很讨厌。如果ucdos不放在前面,那几个必须运行在ucdos下的程序就得每项都加上\ucdos\rd16 ; \ucdos\knl 。有些重复和累赘。而且这几项就会重复运行ucdos,即管ucdos运行一次就够了。
有什么好办法来解决么?
可不可以在处理中作一判断,判断ucdos是否已运行?

作者: 红色狂想     时间: 2003-9-3 00:00
虽然我对批处理不太行,但我可以给你一些编程的思路。你可以在执行时产生临时文件做为标记呀,然后再在需要处理的地方做条件判断,以便执行不同的操作。

作者: willsort     时间: 2003-9-6 00:00
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卸载标签


作者: cn_archer     时间: 2003-9-6 00:00
楼上的方法很实用啊!

作者: congcong     时间: 2003-9-9 00:00
好方法啊!

作者: daiddcc     时间: 2003-9-13 00:00
非常感謝!原來以爲不會有什麽好方法了,看來我對批處理的了解還非常不夠。