пакетный файл для копирования файлов старше 30 минут из одной папки в другую - PullRequest
1 голос
/ 06 июля 2010

Как я могу скопировать файлы старше 30 минут из текущего времени из одной папки в другую?

Ответы [ 2 ]

3 голосов
/ 22 марта 2011

Для команды * nix find имеется несколько портов Windows, предлагающих такие переключатели, как -mmin и -mtime, которые были бы полезны здесь, позволяя решить проблему с помощью одной строки…
Примечаниечто Powershell, безусловно, является жизнеспособной альтернативой для достижения этой цели .

В простом DOS здесь довольно ограниченный пакетный скрипт, но его достаточно для решения вашей проблемы:

@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

Просто используйте здравый смысл для дельты (зная ограничения) и воздержитесь от использования начальных нулей:]

1 голос
/ 10 июля 2010

Самый простой способ - использовать robocopy (или forfiles)

robocopy является частью win2003 rtk и по умолчанию устанавливается в Vista и Windows 7 -> http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en

FORFILES является частьюкомплекта ресурсов для Windows 2000 / NT, но отлично работает на XP / Vista / 7 -> (я думаю, что он больше не доступен на сайте Microsoft)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...