Comment copier des fichiers dont l'ancienneté est supérieure à 30 minutes d'un dossier à un autre?fichier de commandes pour copier des fichiers de plus de 30 minutes d'un dossier à un autre
Répondre
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
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:]
Voulez-vous _really_ vouloir DOS ou voulez-vous le shell de commande Windows? – paxdiablo