Board logo

标题: [文件操作] 【已解决】批处理如何在特定时间段设置启动程序次数? [打印本页]

作者: chenlugen    时间: 2018-10-27 10:41     标题: 【已解决】批处理如何在特定时间段设置启动程序次数?

本帖最后由 chenlugen 于 2018-10-29 21:32 编辑

帮我看看下面代码要如何改才能达到效果:我想实现8:00~18:00之间任一时间打开此批处理,都是打开day.dps,在其他时间则关闭day.dps后打开night.dps,反之亦然;
要实现BAT不退出,实现监控时间,时间段一变循环执行,但在相同时间段(即BAT意外被人关了,而文件未被关闭时,重新打开BAT时)只打开一次相同的文件。。。不知道描述清楚了没有!!!谢谢了!!!
  1. @echo off & title 根据时间段运行
  2. setlocal enabledelayedexpansion
  3. call :GetNowTime
  4. :RunPart1
  5. ::8:00~18:00
  6. start "" "ppt\day.dps"
  7. ::如果需要循环运行,请把下面的exit指令删除或用注释符进行屏蔽
  8. rem exit
  9. call :GetNowTime
  10. :RunPart2
  11. ::18:01~7:59
  12. start "" "ppt\night.dps"
  13. ::如果需要循环运行,请把下面的exit指令删除或用注释符进行屏蔽
  14. rem exit
  15. call :GetNowTime
  16. :GetNowTime
  17. set NowTime=%time:~,8%
  18. set NowTime=%NowTime: =0%
  19. set NowTime=%NowTime::=%
  20. if %NowTime% geq 080000 (
  21.     if %NowTime% leq 180000 (
  22.         goto RunPart1
  23.     ) else (
  24.         goto RunPart2
  25.     )
  26. ) else (
  27.     goto RunPart2
  28. )
  29. goto :eof
复制代码

作者: flashercs    时间: 2018-10-28 08:22

  1. @echo off & title 根据时间段运行
  2. setlocal enabledelayedexpansion
  3. :GetNowTime
  4. set NowTime=%time:~,8%
  5. set NowTime=%NowTime: =0%
  6. set NowTime=%NowTime::=%
  7. if %NowTime% geq 080000 (
  8.     if %NowTime% leq 180000 (
  9.         call :RunPart1
  10.     ) else (
  11.         call :RunPart2
  12.     )
  13. ) else (
  14.     call :RunPart2
  15. )
  16. REM 延迟10s
  17. timeout 10
  18. goto GetNowTime
  19. exit /b
  20. :RunPart1
  21. ::8:00~18:00
  22. tasklist /fi "imagename eq night.dps"|find /i "night.dps"&&taskkill /f /t /im "night.dps"
  23. tasklist /fi "imagename eq day.dps"|find /i "day.dps"||start "" "ppt\day.dps"
  24. exit /b
  25. :RunPart2
  26. ::18:01~7:59
  27. tasklist /fi "imagename eq day.dps"|find /i "day.dps"&&taskkill /f /t /im "day.dps"
  28. tasklist /fi "imagename eq night.dps"|find /i "night.dps"||start "" "ppt\night.dps"
  29. exit /b
复制代码

作者: chenlugen    时间: 2018-10-28 17:21

本帖最后由 chenlugen 于 2018-10-29 21:32 编辑

回复 2# flashercs
感谢大侠的热心回复,明天去科室试试,主要是科室外接个宣传显示屏,PPt格式的宣传,看有没有能改进的地方,能实现:
1、如在是上班时间8:00~17:30自动打开day.dps并放映PPt,如期间PPT被关闭,能检测到并自动重新放映;
2.上班时间8:00~17:30 如果多次打开批处理,如PPT已打开,则进入监控操作,即不重复打开,如没有则重新打开
3.在其它时间,则关闭日间PPT,切换夜间PPT,实现日间所需功能!!!
求大侠帮助!!!!
好像用taskkill杀进程WPP.exe(WPS软件)的方法关闭PPT,第二次打开PPT时会报文件自动恢复等错误提示,不能实现自动放映...
谢谢!!!!

作者: flashercs    时间: 2018-10-28 21:46

回复 3# chenlugen


    dps 怎么正确关闭?按ESC吗?
作者: Batcher    时间: 2018-10-29 08:49

回复 3# chenlugen


    Alt + F4 能正常关闭吗?
作者: chenlugen    时间: 2018-10-29 21:30

感谢各位大大的热情解答,基本解决了问题!!!谢谢!!!
作者: Batcher    时间: 2018-10-30 08:33

回复 6# chenlugen


    用的什么方案?给大家分享一下吧
作者: chenlugen    时间: 2018-11-2 19:54

回复 7# Batcher
基本上能实现要的功能,但还不太完善,版主大大能帮忙优化下吗???
有些代码只是作调试用的!!!
  1. :GetNowTime
  2. set NowTime=%time:~,8%
  3. set NowTime=%NowTime: =0%
  4. set NowTime=%NowTime::=%
  5. if %NowTime% geq 080000 (
  6.     if %NowTime% leq 180000 (
  7.         call :RunPart1
  8.     ) else (
  9.         call :RunPart2
  10.     )
  11. ) else (
  12.         call :RunPart2
  13. )
  14. REM 延迟5s
  15. choice /t 5 /d y /n >nul
  16. goto GetNowTime
  17. exit /b
  18. :RunPart1
  19. ::8:00~18:00
  20. REM tasklist /v>taskinfo.txt
  21. tasklist /v /fi "Windowtitle eq Microsoft PowerPoint - [night [兼容模式]]"|findstr /i /c:"Microsoft PowerPoint - [night [兼容模式]]">>"taskinfo.txt"||goto rp1
  22. taskkill /fi "Windowtitle eq Microsoft PowerPoint - [night [兼容模式]]" /t>nul
  23. echo 结束-Windowtitle eq Microsoft PowerPoint - [night [兼容模式]]进程成功!>>BatRuninfo.txt
  24. :rp1
  25. REM 延迟3s
  26. choice /t 3 /d y /n >nul
  27. tasklist /v /fi "Windowtitle eq Microsoft PowerPoint - [day [兼容模式]]"|findstr /i /c:"Microsoft PowerPoint - [day [兼容模式]] ">>"taskinfo.txt"&&goto rp2||goto rp3
  28. :rp2
  29. goto :eof
  30. rem exit /b
  31. :rp3
  32. start "" "ppt\day.ppt"
  33. echo 打开ppt-Windowtitle eq Microsoft PowerPoint - [night [兼容模式]]成功!>>BatRuninfo.txt
  34. REM 延迟5s
  35. choice /t 5 /d y /n >nul
  36. call res\keyf5.vbs
  37. exit /b
  38. :RunPart2
  39. ::18:01~7:59
  40. tasklist /v /fi "Windowtitle eq Microsoft PowerPoint - [day [兼容模式]]"|findstr /i /c:"Microsoft PowerPoint - [day [兼容模式]] ">>"taskinfo.txt"|| goto rp4
  41. taskkill /fi "Windowtitle eq Microsoft PowerPoint - [day [兼容模式]]" /t>nul
  42. echo 结束-Windowtitle eq Microsoft PowerPoint - [day [兼容模式]]进程成功!>>BatRuninfo.txt
  43. :rp4
  44. REM 延迟3s
  45. choice /t 3 /d y /n >nul
  46. tasklist /v /fi "Windowtitle eq Microsoft PowerPoint - [night [兼容模式]]"|findstr /i /c:"Microsoft PowerPoint - [night [兼容模式]]">>"taskinfo.txt"&&goto rp5||goto rp6
  47. :rp5
  48. exit /b
  49. :rp6
  50. echo 打开ppt-Windowtitle eq Microsoft PowerPoint - [night [兼容模式]]成功!>>BatRuninfo.txt
  51. REM 延迟10s
  52. choice /t 10 /d y /n >nul
  53. start "" "ppt\night.ppt"
  54. call res\keyf5.vbs
  55. exit /b
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2