标题: 如果实现运行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兄的批处理,试过了,是有一点出入。不过一般情况下这样就够用了。