Board logo

标题: [日期时间] 批处理如何实现工作时间判断? [打印本页]

作者: Echo11    时间: 2022-10-7 18:47     标题: 批处理如何实现工作时间判断?

命题1:
假设:
1、不考虑节庆假日与调休。
2、周1-5工作,周6-7休息。
3、8:00-17:00工作,以外时间休息

那么如何判断当前是工作时间还是非工作时间?以下是我的方法,感觉好啰嗦,有没有更优解?
  1. @echo off
  2. SET duty_time=%time:~,2%
  3. IF %duty_time% LSS  8 (ECHO.非工作时间) else IF %duty_time% GEQ 17 (ECHO.非工作时间) else (ECHO.一二三四五| find "%date:~-1%" >nul 2>nul && ECHO.工作时间|| ECHO.非工作时间)
  4. pause
复制代码
命题2:
如果考虑节庆假日与调休,有什么地方可以直接下载这种休息日期或工作日期清单吗?
作者: xp3000    时间: 2022-10-8 12:34

本帖最后由 xp3000 于 2022-10-8 12:40 编辑
  1. @if(0)==(0) echo off&setlocal EnableDelayedExpansion
  2. set a=%date:~12%&set b=!a:六=! & set b=!b:日=! & set b=!b: =!
  3. @for /f "delims=" %%i in ('echo %time%^|cscript -nologo -e:jscript "%~f0"') do (
  4.     if  "%%i"=="正确" (setlocal
  5.         if  "!a!" == "!b!" (
  6. echo 星期!a! %time% 为工作时间
  7. ) else (
  8. echo 星期!a! 为休息日
  9. )
  10.         ) else (
  11.         echo 星期!a! %time% 为休息时间
  12.     )
  13. )
  14. echo.
  15. pause & exit /b
  16. @end
  17. WSH.echo(WSH.StdIn.ReadAll().replace(/^(([0 ]*[89]|1[0-6]):[0-5][0-9]:[0-5][0-9]\.[0-5][0-9]|17:00:00\.00) */, '正确').match(/^[^\r\n]+/).join('\r\n'));
复制代码

作者: xp3000    时间: 2022-10-8 12:46

修改多次还是时灵时不灵不会了
作者: hlzj88    时间: 2022-10-8 21:08

  1. @echo off
  2. SET /a duty_time=%time:~,2%*60
  3. IF %duty_time% LSS 480 (ECHO.非工作时间) else IF %duty_time% GEQ 1020 (ECHO.非工作时间) else (ECHO %date%|find "六 日" >nul 2>nul && ECHO.非工作时间|| ECHO.工作时间)
  4. pause
复制代码
以我的能力,感觉还是你的代码简便,当然,对你的代码进行了修改,以期能更准确一点。




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