【问题标题】:Batch file to add today's date, yesterday's date, previous day's date as extension to file name批处理文件添加今天的日期,昨天的日期,前一天的日期作为文件名的扩展名
【发布时间】:2012-02-26 23:12:41
【问题描述】:

以下内容获取一个文件 MB5L.txt 并将其压缩为一个 zip 文件,其中日期作为文件名的一部分:

@For /F "tokens=1,2,3,4 delims=/ " %%A in ('Date /t') do @(
    Set DayW=%%A
    Set Day=%%B
    Set Month=%%C
    Set Year=%%D
    Set All=%%D%%B%%C
)

"C:\Windows\CWBZIP.EXE" "c:\transfer\ziptest%All%.zip" "C:\transfer\MB5L.txt"

今天取MB5L.txt,压缩成ziptest20120204.zip。

我想获取一个名为 MB5L201202.txt 的文件并将其压缩为 MB5L20120202.zip,其中“20120202”是一个变量,从而允许管理员在周一早上运行批处理文件来归档周末的文件。

非常感谢任何建议。

【问题讨论】:

  • 我想了解您想要什么。你想让批处理文件计算两天前的日期吗?网上其他地方有批处理日期算术的例子,可能还有 Stack Overflow。如果这是你想要的,我可能会为你找到一些代码。

标签: date batch-file datestamp


【解决方案1】:

所以您希望今天日期或昨天包含在输出名称中? 如果昨天我做了一个..可以和你分享!

 set yyyy=

set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=))

if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100

set CurDate=%mm%/%dd%/%yyyy%
set dayCnt=%1

if "%dayCnt%"=="" set dayCnt=1

REM Substract your days here
set /A dd=1%dd% - 100 - %dayCnt%
set /A mm=1%mm% - 100

:CHKDAY
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1

:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
REM ** Month 12 falls through

:SET31
set /A dd=31 + %dd%
goto CHKDAY

:SET30
set /A dd=30 + %dd%
goto CHKDAY

:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29

:SET28
set /A dd=28 + %dd%
goto CHKDAY

:SET29
set /A dd=29 + %dd%
goto CHKDAY

:DONE
if /I %mm% LSS 10 set mm=0%mm%
if /I %dd% LSS 10 set dd=0%dd%

REM Set IIS and AWS date variables
set IISDT=%yyyy:~2,2%%mm%%dd%
set AWSDT=%yyyy%-%mm%-%dd%

"C:\Windows\CWBZIP.EXE" "c:\transfer\ziptest%dd%-%mm%-%yyyy%.zip" "C:\transfer\MB5L.txt"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多