[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 使循环两个批处理自动以固定的间隔时间启动

本帖最后由 andsoabc 于 2021-5-28 19:06 编辑

有四组批命令,
第一组:a1,a2,a3,a4
第一组:a5,a6,a7,a8
第一组:a9,a10,a11,a12
第一组:a13,a14,a15,a16
1、以各组为步骤循环运行
2、各组的批处理是同时运行的,第一组同时启动后,过一小时启动第二组,再过一个小时启动第三组,再过一个小时启动第四组,最后a1~16同时在运行。
3、上一轮的第一组完成后马上重新开始运行第一组,过一个小时运行第二组(此时有可能第二组的上一轮还没结束,那么需要等待上一轮的第二组结束),再过一个小时启动第三组(此时有可能第三组的上一轮还没结束,那么需要等待上一轮的第三组结束),再过一个小时启动第四组(此时有可能第四组的上一轮还没结束,那么需要等待上一轮的第四组结束)
4、各批处理在同一时间只能运行一个批处理,最多a1~16个同时在运行
5、各批命令运行结束的时间都不确定
6、一个批处理运行时间在6个小时以上

问题:怎样让各组能够以固定的间隔时间开始(主要需要解决的问题是第二点)

批处理:a.bat
                        echo (a)start %date% %time% >>D:\task\a.txt
                        start a1.bat
                        start a2.bat
                        start a3.bat
                        start a4.bat
                        choice /t 3600 /d y
                        start a5.bat
                        start a6.bat
                        start a7.bat
                        start a8.bat
                        choice /t 3600 /d y
                        start a8.bat
                        start a10bat
                        start a11.bat
                        start a12.bat
                        choice /t 3600 /d y
                        start a13.bat
                        start a14.bat
                        start a15.bat
                        start a16.bat
                        echo (a)end %date% %time% >>D:\task\a.txt
                        exit

批处理a1.bat
                        echo (a1)start %date% %time% >>D:\task\a1.txt
                        a.exe
                        echo (a1)end %date% %time% >>D:\task\a1.txt
                        exit
                       
批处理a2.bat
                        echo (a2)start %date% %time% >>D:\task\a2.txt
                        a.exe
                        echo (a2)end %date% %time% >>D:\task\a2.txt
                        exit
                       
批处理a3.bat
                        echo (a3)start %date% %time% >>D:\task\a3.txt
                        a.exe
                        echo (a3)end %date% %time% >>D:\task\a3.txt
                        exit
                       
批处理a4.bat
                        echo (a4)start %date% %time% >>D:\task\a4.ltxt
                        a.exe
                        echo (a4)end %date% %time% >>D:\task\a4.txt
                        exit

批处理a5.bat
批处理a6.bat
批处理a7.bat......

a*.bat 不调用a.bat

要么直接 a1 调用 a2 ,a2 调用 a3

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set g1=a1 a2 a3 a4
  4. set g2=a5 a6 a7 a8
  5. set g3=
  6. set g4=
  7. for %%a in (g1 g2) do (
  8.     echo !%%a!
  9.     for %%a in (!%%a!) do (
  10.         echo %date% %time% start %%a >>D:\task\a.txt
  11.         start /wait %%a.bat
  12.         echo %date% %time% end %%a >>D:\task\a.txt
  13.     )
  14.     if not "%%a"=="g4" timeout /t 3600
  15. )
复制代码

TOP

  1. @echo off&&setlocal enabledelayedexpansion
  2. set tt=0
  3. :ks
  4. rem 功能选择
  5. set /a tt+=1
  6. if %tt%==1 start "" 1.bat&&goto sj
  7. if %tt%==2 start "" 2.bat&&goto sj
  8. if %tt%==3 start "" 3.bat&&goto sj
  9. if %tt%==4 start "" 4.bat&&goto sj
  10. :sj
  11. rem 延时
  12. echo %tt%
  13. if %tt%==4 set tt=0
  14. ping /n 600 127.1>nul
  15. goto ks
复制代码
这样可以吗
目的,学习批处理

TOP

返回列表