|
发表于 2011-12-14 10:30:14
|
显示全部楼层
我 用到了压缩 加了密码
@echo on
PATH=C:\Program Files\7-Zip
7z a -t7z xampp%DATE:~0,10%.7z c:\xampp\ -po -m0=BCJ -m1=LZMA:d=21 -ms -mmt
copy xampp*.7z e:\backup
del xampp*.7z
@echo on
@echo off
:: 求10天前的日期
:: 思路:
:: 模拟手工运算,用日期数减去天数,差值为负时向高位借1。
:: 特点:
:: 代码简洁,容易理解,速度快慢取决于指定的天数大小
setlocal enabledelayedexpansion
:Main
cls
:: 日期可以带星期,但是,必须以年月日的顺序排列
:: 年份必须是四位,否则会出错
set day=%date%
set days=0
echo.&echo.
echo 指定的日期是:%day%
echo.
:: 提取日期
for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do (
set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100
)
set /a sd-=10
set /a ii=10
if %sd% leq 0 call :count
cls
echo.&echo.
echo 指定的日期是:%day%
echo.
set sm=0%sm%
set sd=0%sd%
echo %ii% 天前的日期是:%sy%-%sm:~-2%-%sd:~-2%
del E:\backup\xampp%sy%-%sm:~-2%-%sd:~-2%.7z
pause
:count
set /a sm-=1
if !sm! equ 0 set /a sm=12, sy-=1
call :days
set /a sd+=days
if %sd% leq 0 goto count
goto :eof
:days
:: 获取指定月份的总天数
set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
set /a max=28+leap
set num=0
set str=31 %max% 31 30 31 30 31 31 30 31 30 31
for %%i in (%str%) do (
set /a num+=1
if %sm% equ !num! set days=%%i&goto :eof
)
goto :eof
pause |
|