标题: [日期时间] 批处理如何实现按需调用/执行不同的子过程? [打印本页]
作者: junili 时间: 2016-5-6 13:38 标题: 批处理如何实现按需调用/执行不同的子过程?
本帖最后由 pcl_test 于 2016-5-7 14:25 编辑
由于bat不具备多线程,我又不想去调用太多子程序。我有这样一个假设:先获取当前时间,然后当系统时间大于“该时间”5S时执行标签A(子程序A);然后继续计时,大于“该时间”10S时执行标签B(子程序B),以此类推…。假设我有10个子程序,总运行时间是50S+,那就当计时至60S时就复位“该时间”为最新值,继续循环。
PS:因为我每个子程序基本上都有内循环,不知道怎么跳出内循环,只能用总时间去强制跳转。不知道各位大神有没有办法,最好是bat脚本,小白我就对bat情有独钟,方便我后期更改。谢谢!
作者: junili 时间: 2016-5-6 16:27
我摸索出来一种新的方案:在子程序内部进行时间判断该程序所运行的时间,如果运行时间大于设定值,就跳出该子程序。但在时间判断时,但运行中好像不对,不知道该怎么解决,代码如下:- @echo off
- :test
- rem 子程序1
- set "time_1=%time:~3,2%%time:~6,2%"
- rem 获取 当前时间,取后4位
- echo %time_1%
- rem 显示 获取的时间。测试用,实例中可删除
- ping -n 5 127.1>nul
- rem 模拟 子程序(主代码)运行所占用的时间
- :001
- rem 子程序(内循环块)
- echo 循环中
- ping -n 2 127.1>nul
- rem 模拟 子程序(循环块)运行所占用的时间
- set "time_2=%time:~3,2%%time:~6,2%"
- rem 获取 当前时间,取后4位
- echo %time_2%
- rem 显示 获取的时间。测试用,实例中可删除
- set /a time=%time_2%-%time_1%
- rem 计算 时差
- echo %time%
- rem 显示 时差。测试用,实例中可删除
- if "%time%" gtr "5" (
- goto 002 )else (
- goto 001
- )
- rem 根据时差判断是否跳出跳出子程序
- exit
- :002
- echo 已跳至子程序2
- rem 子程序2
- pause>NULL
复制代码
另外,好像我这命令太复杂了,可不可以简化一下。谢谢!
作者: pcl_test 时间: 2016-5-6 21:21
本帖最后由 pcl_test 于 2016-5-7 23:42 编辑
举个栗子- @echo off
- echo;#1
- call :1
- echo;#2
- call :2 4
- pause&exit
- :1
- for /l %%i in (1 1 3) do echo;%%i
- goto :eof
- :2
- set i=%1
- :loop
- echo;%i%
- if %i% equ 6 goto :1
- set/a i+=1
- goto loop
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |