时间:2023-05-25 来源:网络 人气:
如果你是一名需要频繁查询上一非节假日的职场人士,那么这篇文章一定会让你受益匪浅。本文将为大家介绍一款基于“dos批处理命令”的小工具,帮助你快速精准地找到上一非节假日。接下来,我们将从以下几个方面进行详细介绍:
1.什么是“dos批处理命令”?
在进入正题之前,我们先来了解一下“dos批处理命令”是什么。它是一种在Windows操作系统下运行的脚本语言,可以用于自动化执行多个命令和操作。如果你平时经常使用Windows系统进行办公或学习,那么相信你对于“cmd”这个应用程序并不陌生。而“dos批处理命令”就可以通过cmd来执行。
2.如何编写这款小工具?
在理解了“dos批处理命令”的基础知识之后,我们就可以开始编写这款小工具了。具体步骤如下:
Step1:打开记事本或其他文本编辑器;
Step2:复制以下代码,并粘贴到记事本中;
bat
@echooff
for/f"skip=1"%%iin('w32tm/stripchart/computer:localhost/dataonly/samples:1/period:1^|findstr/r"\[*\]"')doset"output=%%i"
for/f"tokens=2delims=,"%%iin("%output%")doset"datestr=%%i"
setyy=%datestr:~0,4%
setmm=%datestr:~5,2%
setdd=%datestr:~8,2%
set/ad=%dd%+1
settoday=%yy%%mm%%dd%
for/L%%iin(1,1,10)do(
set/ad=d-1
if%d%==0(
setmm=%mm%-1
if%mm%==0(
setmm=12
set/ayy=%yy%-1
)
if%mm%==2(
if%yy%==0(
setleap=1
)elseif%yy%^4==0(
if%yy%^100==0(
if%yy%^400==0(
setleap=1
)else(
setleap=
)
)else(
setleap=1
)
)else(
setleap=
)
ifdefinedleap(
setd=29
)else(
setd=28
)f56ac3d0fc4809ae1c100a6b745ccf4b)elseif%mm%==4call:setdays30
elseif%mm%==6call:setdays30
elseif%mm%==9call:setdays30
elseif%mm%==11call:setdays30
goto:done
)
set/amm=%mm%
if%mm%==2(
if%yy%==0(
setleap=1
)elseif%yy%^4==0(
if%yy%^100==0(
if%yy%^400==0(
setleap=1
)else(
setleap=
)
)else(
setleap=1
)f56ac3d0fc4809ae1c100a6b745ccf4b)else(
setleap=f56ac3d0fc4809ae1c100a6b745ccf4b)
ifdefinedleap(964ce8673895e100f1937f854ad40898=29
)else(964ce8673895e100f1937f854ad40898=28
)
)elseif%mm%==4call:setdays30
elseif%mm%==6call:setdays30
elseif%mm%==9call:setdays30
elseif%mm%==11call:setdays30
)
:done
if%mm%lss10(setmm=0%mm%)
if%d%lss10(setd=0%d%)
setlastday=%yy%%mm%%d%
echo上一非节假日:%lastday%
pause>nul
:setdays
set/ad=%1-1
exit/b
Step3:将文件另存为“find_last_workday.bat”(注意后缀名要是“.bat”);
Step4:将该文件放在任意目录下,并在该目录下打开cmd;
Step5:输入“find_last_workday.bat”并回车即可。
3.如何使用这款小工具?
经过以上步骤,我们已经成功编写了这款小工具。接下来,我们就来看看如何使用它。
Step1:打开cmd;
Step2:进入存放“find_last_workday.bat”的目录;
Step3:输入“find_last_workday.bat”并回车;
Step4:等待程序执行完毕,即可在命令行中看到上一非节假日的日期。
4.小工具的原理是什么?
如果你对于以上代码并不熟悉,那么可能会对小工具的原理有所疑惑。这里我们简单介绍一下。
该小工具的核心代码如下:
bat
for/f"skip=1"%%iin('w32tm/stripchart/computer:localhost/dataonly/samples:1/period:1^|findstr/r"\[*\]"')doset"output=%%i"
for/f"tokens=2delims=,"%%iin("%output%")doset"datestr=%%i"
这段代码主要是通过Windows自带的时间同步服务(w32tm)获取当前计算机的时间,并将其转化为指定格式(YYYY/MM/DD)。得到当前日期之后,程序会循环查找最近的非节假日日期,并输出结果。
5.总结
通过本文的介绍,我们了解了“dos批处理命令”以及如何使用它来编写一个小工具,帮助我们快速找到上一非节假日。如果你经常需要进行类似查询操作,那么这款小工具无疑会为你带来便捷。希望本文对大家有所帮助。
tokenpocket钱包:https://cjge-manuscriptcentral.com/software/2029.html