2010-07-06 10 views

Répondre

1

La façon la plus simple est d'utiliser robocopy (ou forfiles)

robocopy fait partie de Win2003 rtk et est installé sur Vista et Windows 7 par défaut -> http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en

forfiles fait partie de Windows 2000/kit de ressources NT, mais fonctionne très bien sur XP/Vista/7 -> (je pense que ce n'est pas disponible sur le site de Microsoft plus)

h_ttp: //www.petri.co.il/download_free_reskit_tools.htm

3

Il y a plusieurs ports Windows pour la commande * nix find disponibles, offrant des commutateurs comme -mmin et -mtime qui seraient utiles ici, ce qui permet le problème à résoudre avec un one-liner ...
Notez que Powershell est certainement une alternative viable à achieve this goal .

ici dans DOS, est un script de traitement par lots assez limité, mais il suffit comme base pour résoudre votre problème:

@echo off 
setlocal enabledelayedexpansion 

call :GetRefTimestamp -30 
for %%f in (*) do (
    call :GetFileTimestamp "%%~tf" 
    if "!filetimestamp!" LSS "!reftimestamp!" echo -- %%f is older than 30 minutes 
    if NOT "!filetimestamp!" LSS "!reftimestamp!" echo ++ %%f is NOT older than 30 minutes 
) 

endlocal 
goto :EOF 

:GetRefTimestamp 
::get current date/time 
for /f "usebackq tokens=1-5 delims=/:, " %%f in (`echo %DATE:~-10% %TIME: =0%`) do set reftimestamp=%%h%%g%%fT%%i%%j 
::apply delta (format [-]HHMM) on time part - not handling over/underflow 
set /a timedelta=%~1 
set timedeltasign= 
if %timedelta% LSS 0 set timedeltasign=- 
set timeHHMM=%timestamp:~-4% 
set /a timeHHMM+=timedelta 
set /a timeMM=timeHHMM %% 100 
if %timeMM% GEQ 60 set /a timeHHMM+=%timedeltasign%40 
set timeHHMM=000%timeHHMM% 
set reftimestamp=%reftimestamp:~0,-4%%timeHHMM:~-4% 
goto :EOF 

:GetFileTimestamp 
::get file date/time 
for /f "usebackq tokens=1-5 delims=/:, " %%f in (`echo %~1`) do set filetimestamp=%%h%%g%%fT%%i%%j 
goto :EOF 

utiliser juste le bon sens pour le delta (connaissant les limites) et ne pas utiliser zéros en tête:]