gpt4 book ai didi

date - 如何找到上周日的日期并将其保存在Windows批处理文件的变量中

转载 作者:行者123 更新时间:2023-12-02 23:58:56 24 4
gpt4 key购买 nike

我有一个脚本,该脚本需要连接到ftp服务器并下载仅在星期日创建的文件,并且将yyyy-mm-dd-hh-mm-ss附加到文件名。我需要找到最后一个星期日的日期(假设是今天的日期)并将其转换为yyyy-mm-dd(我不在乎时间),以便可以在ftp脚本中构造文件名。我在此站点和其他站点上搜索了很多线程,但是对于批处理语法我还是一个新手。我无法对将运行此脚本的计算机上的日期格式进行假设,但是它将与ftp服务器位于相同的时区,并且它将至少在Windows 7上运行。我考虑过在HOW to find last SUNDAY DATE through batch中使用PowerShell解决方案,但我想阅读过PS脚本的可移植性问题。任何帮助是极大的赞赏。让我知道是否需要提供更多详细信息。谢谢!

最佳答案

几年前,我写了一个批处理脚本来查找昨天的日期。我可以根据今天的日期计算“昨天”。它考虑了到30日或31日结束的月份,甚至以后的leap年。我写它的方式希望日期格式为'Wed 02/24/2016'或'ddd MM / DD / YYYY',因此对您可能没有用。

在我现在看来,它可能比需要的复杂得多,并且可能使用了一些清理功能,但是它可以满足我的目的。您可能能够以某种方式对其进行修改,以使其在上个星期日而不是昨天找到。

set yearCounter=0
set yyyy=%date:~10,4%
set mm=%date:~4,2%
set dd=%date:~7,2%

::use these to override the actual date values for testing
::set yyyy=xxxx
::set mm=xx
::set dd=xx

if %dd%==01 goto LDoM ::Last Day of Month

set DS=%yyyy%%mm%%dd%
set /A yesterday=%DS%-1
goto endyesterday

:LDoM
set /A lastyyyy=%yyyy%-%yearCounter%

if %yesterday:~4,2%==01 set lastmm=12& set lastdd=31& goto LDoY ::Last Day of Year
if %yesterday:~4,2%==02 set lastmm=01& set lastdd=31
if %yesterday:~4,2%==03 set lastmm=02& goto february
if %yesterday:~4,2%==04 set lastmm=03& set lastdd=31
if %yesterday:~4,2%==05 set lastmm=04& set lastdd=30
if %yesterday:~4,2%==06 set lastmm=05& set lastdd=31
if %yesterday:~4,2%==07 set lastmm=06& set lastdd=30
if %yesterday:~4,2%==08 set lastmm=07& set lastdd=31
if %yesterday:~4,2%==09 set lastmm=08& set lastdd=31
if %yesterday:~4,2%==10 set lastmm=09& set lastdd=30
if %yesterday:~4,2%==11 set lastmm=10& set lastdd=31
if %yesterday:~4,2%==12 set lastmm=11& set lastdd=30

set yesterday=%lastyyyy%%lastmm%%lastdd%
goto endYesterday

:february
set leapyear=n
set lastdd=28
if %yesterday:~0,4%==2016 set leapyear=y
if %yesterday:~0,4%==2020 set leapyear=y
if %yesterday:~0,4%==2024 set leapyear=y
if %yesterday:~0,4%==2028 set leapyear=y
if %leapyear%==y set lastdd=29

set yesterday=%lastyyyy%%lastmm%%lastdd%
goto endYesterday

:LDoY
set /A yearCounter=%yearCounter%+1
set /A lastyyyy=%yyyy%-%yearCounter%
set yesterday=%lastyyyy%%lastmm%%lastdd%

:endYesterday
@echo off
echo %yyyy% %lastyyyy%
echo %mm% %lastmm%
echo %dd% %lastdd%
echo.
echo today = %yyyy%%mm%%dd%
echo yesterday = %yesterday%

关于date - 如何找到上周日的日期并将其保存在Windows批处理文件的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35607280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com