标题: [日期时间] 批处理如何实现工作时间判断? [打印本页]
作者: Echo11 时间: 2022-10-7 18:47 标题: 批处理如何实现工作时间判断?
命题1:
假设:
1、不考虑节庆假日与调休。
2、周1-5工作,周6-7休息。
3、8:00-17:00工作,以外时间休息
那么如何判断当前是工作时间还是非工作时间?以下是我的方法,感觉好啰嗦,有没有更优解?- @echo off
- SET duty_time=%time:~,2%
- IF %duty_time% LSS 8 (ECHO.非工作时间) else IF %duty_time% GEQ 17 (ECHO.非工作时间) else (ECHO.一二三四五| find "%date:~-1%" >nul 2>nul && ECHO.工作时间|| ECHO.非工作时间)
- pause
复制代码
命题2:
如果考虑节庆假日与调休,有什么地方可以直接下载这种休息日期或工作日期清单吗?
作者: xp3000 时间: 2022-10-8 12:34
本帖最后由 xp3000 于 2022-10-8 12:40 编辑
- @if(0)==(0) echo off&setlocal EnableDelayedExpansion
-
- set a=%date:~12%&set b=!a:六=! & set b=!b:日=! & set b=!b: =!
-
- @for /f "delims=" %%i in ('echo %time%^|cscript -nologo -e:jscript "%~f0"') do (
-
- if "%%i"=="正确" (setlocal
- if "!a!" == "!b!" (
- echo 星期!a! %time% 为工作时间
- ) else (
- echo 星期!a! 为休息日
- )
- ) else (
- echo 星期!a! %time% 为休息时间
- )
- )
- echo.
- pause & exit /b
- @end
- 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
- @echo off
- SET /a duty_time=%time:~,2%*60
- IF %duty_time% LSS 480 (ECHO.非工作时间) else IF %duty_time% GEQ 1020 (ECHO.非工作时间) else (ECHO %date%|find "六 日" >nul 2>nul && ECHO.非工作时间|| ECHO.工作时间)
- pause
复制代码
以我的能力,感觉还是你的代码简便,当然,对你的代码进行了修改,以期能更准确一点。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |