批处理获取每月的第一天和最后一天日期
时间: 2023-08-31 14:05:51 浏览: 71
可以使用以下命令批处理获取每月的第一天和最后一天日期:
```
@echo off
setlocal
set "today=%date:~0,4%-%date:~5,2%-%date:~8,2%"
echo Today is %today%
for /f "tokens=1-3 delims=-" %%a in ("%today%") do (
set /a "yy=%%a", "mm=1%%b-100"
)
set /a "mm1=mm+1", "yy1=yy"
if %mm1%==13 set /a "yy1+=1", "mm1=1"
set "first_day=%yy%-%mm%-01"
set "last_day=%yy1%-%mm1%-01"
set /a "last_day-=1"
echo First day of the month: %first_day%
echo Last day of the month: %last_day%
```
这个命令首先获取当前日期并将其格式化为 yyyy-mm-dd 的形式。然后,它将日期分解为年和月的组成部分,并计算出下一个月的年和月。如果下一个月是13,年加1,月变为1。然后,它将第一天设置为当前月的第一天(即 yyyy-mm-01),将最后一天设置为下一个月的第一天减去1天。最后,它输出第一天和最后一天的日期。
相关问题
每个月第一天批处理复制文件到另一个文件夹
这是一个编程类的问题,可以回答。您可以使用 Windows 的命令行工具或者编写一个批处理脚本来实现这个功能。以下是一个示例批处理脚本:
```
@echo off
set source_folder=C:\source
set destination_folder=C:\destination
xcopy /s /e /y %source_folder% %destination_folder%
```
其中,`source_folder` 是源文件夹的路径,`destination_folder` 是目标文件夹的路径。`xcopy` 命令用于复制文件和文件夹,`/s` 参数表示复制子目录,`/e` 参数表示复制空目录,`/y` 参数表示覆盖目标文件而不提示。
批处理日期减一天
可以使用以下命令来批处理日期减一天:
```
@echo off
setlocal
set "today=%date:~0,4%-%date:~5,2%-%date:~8,2%"
echo Today is %today%
for /f "tokens=1-3 delims=-" %%a in ("%today%") do (
set /a "yy=%%a", "mm=1%%b-100", "dd=1%%c-100"
)
set /a "dd-=1"
if %dd%==0 (
set /a "mm-=1"
if %mm%==0 (
set /a "yy-=1", "mm=12", "dd=31"
) else (
for %%a in (1 3 5 7 8 10 12) do (
if %%a==%mm% (
set "dd=31"
goto :break
)
)
for %%a in (4 6 9 11) do (
if %%a==%mm% (
set "dd=30"
goto :break
)
)
set /a "dd=28+(yy %% 4 == 0 && (yy %% 100 != 0 || yy %% 400 == 0))"
)
)
:break
if %mm% < 10 set "mm=0%mm%"
if %dd% < 10 set "dd=0%dd%"
set "yesterday=%yy%-%mm%-%dd%"
echo Yesterday was %yesterday%
```
这个命令首先获取当前日期并将其格式化为 yyyy-mm-dd 的形式。然后,它将日期分解为年、月和日的组成部分,并将日减去1。如果日变成0,则月减去1,如果月变成0,则年减去1,月变为12,日变为31。否则,它将根据月份设置日数。最后,它将新日期格式化为 yyyy-mm-dd 的形式并输出。