Компьютерный форум 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=339430)

sec1or 26-02-2019 11:22 2860069

Копирование файлов в определенный промежуток времени.
 
Доброго времени суток! что-то ничего не нашел и решил спросить.

требуется копировать файлы которые появились в промежуток времени например с 12-00 до 16-00.
сейчас я просто копирую за текущую дату:

Код:

xcopy /s /y /d:%DATE:~3,2%-%DATE:~,2%-%DATE:~6,4% "D:\share\*" "\\192.168.1.1\Test"
Помогите, пожалуйста, реализовать сей алгоритм =)

alpap 26-02-2019 13:21 2860113

Цитата:

Цитата sec1or
реализовать сей алгоритм »

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

sec1or 26-02-2019 14:05 2860119

Этот код скопирует все файлы за текущую дату. Не важно когда его запускать.

alpap 26-02-2019 15:04 2860130

да, чего-то не так условие понял
Код:

@echo off
set "d1=C:\papka1"
set "d2=C:\papka2"
set /a t1=12,t2=16

if not exist "%d2%" md "%d2%"
pushd "%d1%"
 for /f "tokens=1-3*" %%a in ('dir /a-d/tc "*.*"^|findstr/rc:"^[^ ]"') do set "ti=%%b"& call :dt "%%d" "%%a" "%%ti:~0,2%%"
popd
pause& exit

:dt
 if %~2==%date% if %~3 geq %t1% if %~3 leq %t2% >nul copy "%~1" "%d2%\%~1"
exit /b


sec1or 26-02-2019 15:17 2860132

Спасибо огромное !

megaloman 26-02-2019 15:17 2860133

До кучи
Код:

@Echo Off
cls
        Set "BoxIn=D:\share"
        Set "Mask=*.*"
        Set "BoxOut=\\192.168.1.1\Test"

        Set "T1=9:30"
        Set "T2=17:45"
        Set "Delim=:"

        Call :MyTime %T1% %Delim% "TT1"
        Call :MyTime %T2% %Delim% "TT2"

        Pushd "%BoxIn%"
        FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D`) DO Call :CopyTime "%%i" "%BoxOut%" %TT1% %TT2% %Delim% %%~ti
        Popd
pause
Exit /B 0

:MyTime
SetLocal
        Set "T=%~1"
        Call Set "T=00%%T:%Delim%=%%"
EndLocal &Set /A %~3=1%T:~-4%
Exit /B %ErrorLevel%

:CopyTime
        If Not "%Date%"=="%6" Exit /B 0
        Call :MyTime %7 %5 "T"
        If %T% LSS %3 Exit /B 0
        If %T% GTR %4 Exit /B 0
        >nul Xcopy /Y /D %1 "%~2\"
Exit /B %ErrorLevel%

Выделенная строка ограничивает копирование только сегодняшним днём. Если надо за все дни, эту строку удалить. Применил XCopy /D, чтобы исключить повторное копирование

sec1or 26-02-2019 15:19 2860134

Спасибо огромное ! :)

sec1or 28-03-2019 12:58 2865555

Уважаемые форумчане, помогите, пожалуйста, добавить в этот скрипт еще копирование папок с содержимым =)
Заранее спасибо !

alpap 29-03-2019 01:41 2865707

Цитата:

Цитата sec1or
копирование папок с содержимым »

т.е. надо папку копировать в папку?
Код:

xcopy /i "%userprofile%\Documents" "D:\Documents"

sec1or 29-03-2019 04:34 2865712

Да, но только по времени. файлы или папки. как в скриптах которые вы писали выше. там файлы копируются, а надо еще папки добавить.

megaloman 29-03-2019 21:27 2865850

Файлы и папки, пути пропишИте свои
Код:

@Echo Off
cls
        Set "BoxIn=Z:\Box_In"
        Set "Mask=*.*"
        Set "BoxOut=\\192.168.100.23\Test1"

        Set "T1=9:30"
        Set "T2=17:45"
        Set "Delim=:"

        Call :MyTime %T1% %Delim% "TT1"
        Call :MyTime %T2% %Delim% "TT2"
                                                                                           
        Pushd "%BoxIn%"
        FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D`) DO Call :CopyTime "%%i" "%BoxOut%" %TT1% %TT2% %Delim% %%~ti 0
        FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%BoxIn%\*.*" /B /A:D`) DO Call :CopyTime "%%i" "%BoxOut%" %TT1% %TT2% %Delim% %%~ti 1
        Popd
pause
Exit /B 0

:MyTime
SetLocal
        Set "T=%~1"
        Call Set "T=00%%T:%Delim%=%%"
EndLocal &Set /A %~3=1%T:~-4%
Exit /B %ErrorLevel%

:CopyTime
        If Not "%Date%"=="%6" Exit /B 0
        Call :MyTime %7 %5 "T"
        If %T% LSS %3 Exit /B 0
        If %T% GTR %4 Exit /B 0
        If "%~8"=="0" >nul Xcopy /Y /D %1 "%~2\"
        If "%~8"=="1" >nul Xcopy /Y /E /D %1 "%~2\%~nx1\"
Exit /B %ErrorLevel%


sec1or 01-04-2019 04:03 2866148

Спасибо огромное! в очередной раз выручили )


Время: 02:28.

Время: 02:28.
© OSzone.net 2001-