2012-02-04 6 views
0

Следующая принимает файл, MB5L.txt и сжимает его в почтовый файл с датой как часть имени файла:пакетный файл, чтобы добавить текущую дату, вчерашнюю дату, дату предыдущего дня, как расширение к имени файла

@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

Я пытаюсь понять, чего вы хотите. Вы хотите, чтобы командный файл вычислил дату два дня назад? Есть примеры арифметики пакетной даты в другом месте в сети и, вероятно, переполнение стека. Если это то, что вам нужно, я, вероятно, найду вам код. –

ответ

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% дд% -% мм% -% гггг% .zip" "C: \ перенос \ MB5L.txt"

Смежные вопросы