代码确实有点吓人,但应该是通用的:
@echo off&setlocal enabledelayedexpansion
set /a y=%date:~,4%,m=100%date:~5,2%%%100,d=100%date:~8,2%%%100,mi=100%time:~3,2%%%100
if "%time:~,1%"=="" (set h=%time:~1,1%) else (set h=%time:~,2%)
set /a a=%y%%%4,b=%y%%%100,c=%y%%%400
if %c% equ 0 (set yun=A) else (if %a% equ 0 if %b% neq 0 set yun=A)
if defined yun (set n=29) else (set n=28)
set /a mi-=40,h-=1
if %mi% lss 0 set /a mi+=60,h-=1
if %h% lss 0 set /a h+=24,d-=1
if %d% equ 0 set /a m-=1&goto lp
:cont
for %%i in (%y% %m%) do if %%i lss 10 (set str=!str!0%%i) else (set str=!str!%%i)
for %%i in (%d% %h% %mi%) do if %%i lss 10 (set var=!var!0%%i) else (set var=!var!%%i)
for /f "tokens=1,2,3,4,5,7 delims=-/: " %%a in ('dir /s /a-d *.*') do (
if %%a%%b lss %str% (
echo.%%f
) else (
if %%a%%b equ %str% if %%c%%d%%e lss %var% echo.%%f
)
)
pause>nul&goto :eof
:lp
if %m% equ 2 set d=%n%&goto cont
if %m% equ 0 set m=12&set /a y-=1
for %%i in (1 3 5 7 8 10 12) do if %%i equ %m% set d=31&goto cont
for %%i in (4 6 9 11) do if %%i equ %m% set d=30&goto cont
Last edited by zw19750516 on 2008-6-1 at 04:48 AM ]