Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Копирование файлов, созданных пять минут назад (http://forum.oszone.net/showthread.php?t=336045)

Stolc 06-08-2018 10:26 2825047

Копирование файлов, созданных пять минут назад
 
Как организовать копирование файлов из определенной папки с учетом того, что они были созданы 5 минут назад или раньше? Возможно такое организовать через cmd или powershell?

Iska 06-08-2018 12:34 2825065

Цитата:

Цитата Stolc
они были созданы 5 минут назад или раньше? »

«…или раньше» — это как? 6, 7, 8 и т.д. минут назад или же 4, 3, 2, 1, 0 минут назад?

Stolc 06-08-2018 13:25 2825074

6, 7, 8 и т.д. минут назад

Busla 06-08-2018 13:33 2825076

forfiles, robocopy

megaloman 06-08-2018 20:44 2825153

Stolc, если копировать файлы, то вот вариант. Хотя подозреваю, надо перемещать
Код:

@Echo Off

        Set "BoxIn=Z:\Box_In"
        Set "BoxOut=Z:\Box_Out"
        Set "Mask=*.*"
        Set /A DMin=5

        Call :Minutes "%Date% %Time%" "DayNow" "MinNow"
        FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D`) DO Call :CopyMin "%BoxIn%\%%f"

GoTo :Eof

:CopyMin
        Call :Minutes "%~t1" "DayOld" "MinOld"

        Set /A DOld=(%DayNow%-%DayOld%)*1440+%MinNow%-%MinOld%
        If %DOld% GEQ %DMin% >nul xcopy /D %1 "%BoxOut%\"
GoTo :Eof

:Minutes
        SETLOCAL
        FOR /F "tokens=1,2,3,4,5 delims=.:,/ " %%i IN ("%~1") DO Set "Day=0%%i" &Set "Month=0%%j" &Set "Year=%%k" &Set "Hour=0%%l" &Set "Min=0%%m"
        Set /A Day=1%Day:~-2%-100
        Set /A Month=1%Month:~-2%-100
        Call :JulianDay %Day% %Month% %Year% "Day"
        ENDLOCAL &(Set /A %~2=%Day% &Set /A %~3=1%Hour:~-2%*60+1%Min:~-2%-6100)
GoTo :Eof

rem Вычисляет абсолютный номер дня по юлианскому календарю
rem На входе dd mm yyyy
rem На выходе имя переменной в кавычках четвёртым аргументом

:JulianDay
        Set /A %~4=(1461*(%3+4800+(%2-14)/12))/4+(367*(%2-2-12*((%2-14)/12)))/12-(3*((%3+4900+(%2-14)/12)/100))/4+%1-32075
Exit /B


alpap 06-08-2018 21:39 2825164

Код:

@echo off
set "d1=C:\papka"
set "d2=C:\out"
set mt=%time%
set dt=-5

if not exist "%d2%" md "%d2%"
for /f "tokens=1-2 delims=:" %%a in ("%mt: =0%") do set/a "t=(1%%a-100)*60+(1%%b-100)+(dt %% 1440)","t+=(t>>31)&1440","hh=(t/60 %% 24)+100","mm=(t %% 60)+100"
for /f "tokens=2-4* delims=: " %%a in ('dir /a-d/od/tc "%d1%\*.txt"^|findstr /rc:"^[^ ]"') do if %%a%%b leq %hh:~-2%%mm:~-2% >nul copy "%d1%\%%d" "%d2%"
pause


YuS_2 07-08-2018 13:41 2825252

Цитата:

Цитата Busla
forfiles, robocopy »

оперируют днями и датами... если не ошибаюсь

Цитата:

Цитата Stolc
или powershell »

Код:

$src,$dst='d:\определенная папка','d:\ещё одна определённая папка'
copy (dir $src -file|?{$_.creationtime -lt (get-date).addminutes(-5)}).fullname $dst



Время: 19:15.

Время: 19:15.
© OSzone.net 2001-