Board logo

标题: 如果实现运行A.bat调用B.bat完成后再运行C.bat [打印本页]

作者: ivanisme     时间: 2007-3-20 05:19    标题: 如果实现运行A.bat调用B.bat完成后再运行C.bat

现有三个bat文件,A、B、C。
A的里面有运行B C的功能。
想实现下面的功能:
运行A.bat  Call B.bat  B.bat运行成功 再运行 C.bat


总之就是 按照 A、B、C 的顺序运行,不能B.bat没运行完,C.bat就运行了


PS:DOS里有睡眠的概念吗?

[ Last edited by ivanisme on 2007-3-20 at 09:16 AM ]
作者: Kinglion     时间: 2007-3-20 06:02
知道也不回答你,你注册的时候没有好好看看论坛新手必读那个帖子吗?
作者: ivanisme     时间: 2007-3-20 06:15
我吐血呀
作者: lxmxn     时间: 2007-3-20 06:17

  A.bat里面的代码就一句:call B.bat&&call C.bat;

  兄说的睡眠是延时的意思么?

作者: Kinglion     时间: 2007-3-20 06:26    标题: 建议楼主将主题改为以下:

如果实现运行A.bat调用B.bat完成后再运行C.bat
作者: ivanisme     时间: 2007-3-20 07:38


  Quote:
Originally posted by lxmxn at 2007-3-19 05:17 PM:

  A.bat里面的代码就一句:call B.bat&&call C.bat;

  兄说的睡眠是延时的意思么?

如果B.bat里含有调用exe就不行了呀


睡眠是延时就是线程Sleep
作者: lxmxn     时间: 2007-3-20 07:49


  Quote:
Originally posted by ivanisme at 2007-3-19 18:38:

如果B.bat里含有调用exe就不行了呀

睡眠是延时就是线程Sleep


  含有exe文件可以用start命令来调用;start /min "" exefile.exe

  哦,这个可以用ping命令来简介实现延时;ping 127.1 5 >nul 2>nul,这样可以延时大约4秒钟。

作者: ivanisme     时间: 2007-3-20 21:48
现在的状况是B.bat里有调用exe的东西。
C.bat是调用其它的bat文件
A.bat仍然调用 B.bat、C.bat   (要B执行完,C再执行)

lxmxn老兄有什么好的方法呀?
作者: lxmxn     时间: 2007-3-20 23:03

  几个批处理可以干的事情,用一个批处理也可以完成,你就说说你最终是要达到什么目的吧。

作者: ivanisme     时间: 2007-3-20 23:26
这个批处理的功能是:
先调用一个exe程序(这个需要时间),然后再运行一个外在的bat文件(别人Supply),如果exe没启动好就运行bat就会报错。所以bat必需在exe后运行。

不知我表达的lxmxn能明白不?
作者: lxmxn     时间: 2007-3-20 23:31
  exe 文件运行之后,延迟一下,大约4秒钟,然后再运行你的 bat 文件。
@echo off
start exefile.exe
ping 127.1 -n 5 >nul  2>nul
call batfile.bat

作者: ivanisme     时间: 2007-3-21 00:11
呵呵! 先谢谢lxmxn的回复

试了下MS可以   就是对-n 5有些疑问  查了下ntcmds 不得其解
时间是如何控制的,难道不可以控制吗?

小生愚钝,望lxmxn赐教!
作者: free2     时间: 2007-3-21 01:25
如果是我,我就在 B.BAT 中 CALL C.BAT ,再把剩下的A.BAT C/P 到 C.BAT 的结尾
作者: ivanisme     时间: 2007-3-21 02:10


  Quote:
Originally posted by free2 at 2007-3-20 12:25 PM:
如果是我,我就在 B.BAT 中 CALL C.BAT ,再把剩下的A.BAT C/P 到 C.BAT 的结尾

  你没搞明白呀
作者: lxmxn     时间: 2007-3-21 02:16

  Re ivanisme:

  ping 命令有很多参数,其中有-n和-w两个参数,-n参数是表示发送的ICMP数据包的次数,而-w参数是表示超时的时间间隔的,意思就是如果ping不通指定的主机,在多少秒之后重新发送数据包。默认状态下,-w参数的值是1000,代表一秒,而-n参数指定的是发送的次数,所以指定了-n参数,就可以决定延迟的多少了,利用植树原理,你要延时n秒,那么参数-n就指定为n+1就行了。
  
  ping 127.1 -n 5 这里的“-n 5”表示指定-n参数的值为5,所以大约延迟4秒钟。


[ Last edited by lxmxn on 2007-3-20 at 01:34 PM ]
作者: ivanisme     时间: 2007-3-21 02:26
听君一席话,胜读十年书!
作者: oilio     时间: 2007-3-21 02:28
lxmxn兄的这个用法见过,就是不大会用,这里-w不用指定就是默认的ping一次是1000毫秒是吧,ping五次就是等待4秒?好像数学方面我很差,呵呵。

[ Last edited by oilio on 2007-3-20 at 01:33 PM ]
作者: lxmxn     时间: 2007-3-21 02:39

  Re oilio:

  基本上是这样的,但是这样的延迟不是很准确,要达到准确的延迟,需要用VBS或者其它的工具来实现,比如sleep.exe命令。

  兄可以自己写一个测试ping命令延迟的脚本,来了解它的延迟精度,比如这样:
@echo off
:start_ping
set /p time_ping=请输入要延迟的秒数:
set /a time_ping+=1
echo 1-------%time%
ping 127.1 -n %time_ping% >nul 2>nul
echo 2-------%time%
pause&cls&goto start_ping


[ Last edited by lxmxn on 2007-3-20 at 01:45 PM ]
作者: oilio     时间: 2007-3-21 03:00
谢谢lxmxn兄的批处理,试过了,是有一点出入。不过一般情况下这样就够用了。