2012-02-04 40 views
0

下面以一個文件,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」是一個變量,因此允許管理員在星期一早上運行批處理文件以存檔週末的文件。

任何建議非常感謝。

+0

我試圖理解你想要什麼。你想讓批處理文件在兩天前計算日期嗎?網上有其他地方的批處理日期算法的例子,可能是Stack Overflow。如果這是你以後的事情,我可能會找到你一些代碼。 – 2012-03-04 06:11:34

回答

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:\轉印\ ziptest%DD% - %毫米% - %YYYY%的.zip」, 「C:\轉印\ MB5L.txt」