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

[日期时间] 批处理如何实现工作时间判断?

命题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:
如果考虑节庆假日与调休,有什么地方可以直接下载这种休息日期或工作日期清单吗?

  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
复制代码
以我的能力,感觉还是你的代码简便,当然,对你的代码进行了修改,以期能更准确一点。
目的,学习批处理

TOP

修改多次还是时灵时不灵不会了

TOP

本帖最后由 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'));
复制代码

TOP

返回列表