Jeg har før lavet noget tilsvarende som lige skal tilpasses, men formatet for dato er ikke det samme på Win2000 og XP. Jeg vil gerne vide hvordan %date% ser ud på dit system, er der ugedag i %dato%?
Jeg går ud fra at den dato der skal bruges til at finde ud af om mappen er mere end 7 date gammel skal tages fra navnet, og ikke tidspunkt for oprettelse af mappen.
Windows 2003. Formatet er dd-mm-åååå. Og ja den dato der skal bruges til at finde ud af om mappen er mere end 7 date gammel skal tages fra navnet, og ikke tidspunkt for oprettelse af mappen.
Jeg fik strikket noget sammen der ser ud til at virke, men du bør nok lige teste det en extra gang inden du sætter det til at slette flere års arbejde.
Bemærk: 1: Du kan angive en sti til den mappe hvori dato-mapperne ligger som parameter til scriptet, f.ex: "C:\whatever folder\something\", bemærk at der er "" omkring og det afslutter med en \
2: Jeg har testet det på Win2000, der bruger et lidt anderledes dato-format. Jeg har forsøgt at tage højde for Win2003 og XP, den skulle gerne udføre if delen af "if errorlevel 1 () else ()" på Win2003 og XP.
3: Scriptet udskriver noget i stil med ""d:\Program\a - a\27-12-2003" is to old: 93" for mapper der er mere end 7 dage gamle. Den første del er mappenavn, det sidste tal er antal dage. Dette sker i næst sidste linie, dette skal rettes til de ønskede f.ex. rd /S "%FilePath:"=%%~1"
4: Der regnes ikke i timer og minutter, kun hele dage.
5: Der tages ikke højde for skudår.
@echo off setlocal set FilePath= if not [%1]==[] ( set FilePath="%~dp1" ) else ( set FilePath=".\" )
ver |find "Windows 2000" >nul if errorlevel 1 ( rem Not Win2000, %date% is "dd-mm-yyyy" for /F "tokens=1,2,3 delims=- " %%I in ('date /T') do call :GetDays %%I %%J %%K ) else ( rem Win2000, %date% is "wd dd-mm-yyyy" for /F "tokens=2,3,4 delims=- " %%I in ('date /T') do call :GetDays %%I %%J %%K )
set /A Now=%Days%
for /F "delims=;" %%A in ('dir /B /AD "%FilePath:"=%??-??-????"') do call :Process "%%A" goto :eof
:GetDays set Month=%2 if %Month:~0,1%==0 set Month=%Month:~1,2% set Days=%1 if %Days:~0,1%==0 set Days=%Days:~1,2% set /A Days-=1 set Year=%3 set /A Month-=1 for /L %%A in (1,1,%Month%) do call :MonthDays %%A set /A Year-=1980 set /A Days+="%Year%*365"
goto :eof
:MonthDays for /F "tokens=%1" %%A in ("31 28 31 30 31 30 31 31 30 31 30 31") do set /A Days+=%%A goto :eof
:Process set Days=0 for /F "tokens=1,2,3 delims=-" %%A in (%1) do @call :GetDays %%A %%B %%C Set /A Diff=%NOW%-%Days% if %Diff% GTR 7 ( echo "%FilePath:"=%%~1" is to old: %Diff% )
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.