Давным давно решал я задачу которая требовала сбора появившихся за день файлов с определенным расширением. Вот каким образом я эту задачу решил (использовав материалы огромной сети интернет), использовав только встроенные средства Windows, среди которых замечательная утилита robocopy.
Bat-файл
-----------------------------------------------------------------------------------------------------
@echo off
IF %DATE:~0,1%==0 (
SET /A T_DAY=%DATE:~1,1%) else (
SET /A T_DAY=%DATE:~0,2%)
IF %DATE:~3,1%==0 (
SET /A T_MONTH=%DATE:~4,1%) else (
SET /A T_MONTH=%DATE:~3,2%)
SET /A T_YEAR=%DATE:~6,4%
:: ТУТ МЕНЯЕМ ЧИСЛО, КАК НАЗЫВАТЬ ПАПКУ В КОТОРУЮ БУДУТ СВАЛИВАТЬСЯ ::ОТОБРАННЫЕ ФАЙЛЫ
SET /A T_DAY=%T_DAY%-1
:: формируем правильное название папки исходя из полученного от команды date
IF %T_DAY% LEQ 0 SET /A T_MONTH=%T_MONTH%-1
IF %T_MONTH%== 0 SET /A T_YEAR=%T_YEAR%-1
IF %T_MONTH%== 0 SET /A T_MONTH=12
if %T_MONTH%==1 Set /A DIM=31
if %T_MONTH%==2 Set /A DIM=29
if %T_MONTH%==3 Set /A DIM=31
if %T_MONTH%==4 Set /A DIM=30
if %T_MONTH%==5 Set /A DIM=31
if %T_MONTH%==6 Set /A DIM=30
if %T_MONTH%==7 Set /A DIM=31
if %T_MONTH%==8 Set /A DIM=31
if %T_MONTH%==9 Set /A DIM=30
if %T_MONTH%==10 Set /A DIM=31
if %T_MONTH%==11 Set /A DIM=30
if %T_MONTH%==12 Set /A DIM=31
IF %T_DAY% LEQ 0 SET /A T_DAY=%T_DAY%+%DIM%
IF %T_DAY% LSS 10 SET T_DAY=0%T_DAY%
IF %T_MONTH% LSS 10 SET T_MONTH=0%T_MONTH%
set YYYYMMDD=%T_YEAR%%T_MONTH%%T_DAY%
md "\\PC30\d\Sbor\%YYYYMMDD%"
robocopy \\Server01\e\3d "\\R30\d\Sbor\%YYYYMMDD%" *.avi *.mov /S /MAXAGE:1 /R:3
:: MAXAGE:1 означает что файлы брать не старше 1 суток
:: ключ R я ограничил 3, иначе по умолчанию значение попыток скопировать файл равно ::миллиону, а мне такое не надо
Bat-файл
-----------------------------------------------------------------------------------------------------
@echo off
IF %DATE:~0,1%==0 (
SET /A T_DAY=%DATE:~1,1%) else (
SET /A T_DAY=%DATE:~0,2%)
IF %DATE:~3,1%==0 (
SET /A T_MONTH=%DATE:~4,1%) else (
SET /A T_MONTH=%DATE:~3,2%)
SET /A T_YEAR=%DATE:~6,4%
:: ТУТ МЕНЯЕМ ЧИСЛО, КАК НАЗЫВАТЬ ПАПКУ В КОТОРУЮ БУДУТ СВАЛИВАТЬСЯ ::ОТОБРАННЫЕ ФАЙЛЫ
SET /A T_DAY=%T_DAY%-1
:: формируем правильное название папки исходя из полученного от команды date
IF %T_DAY% LEQ 0 SET /A T_MONTH=%T_MONTH%-1
IF %T_MONTH%== 0 SET /A T_YEAR=%T_YEAR%-1
IF %T_MONTH%== 0 SET /A T_MONTH=12
if %T_MONTH%==1 Set /A DIM=31
if %T_MONTH%==2 Set /A DIM=29
if %T_MONTH%==3 Set /A DIM=31
if %T_MONTH%==4 Set /A DIM=30
if %T_MONTH%==5 Set /A DIM=31
if %T_MONTH%==6 Set /A DIM=30
if %T_MONTH%==7 Set /A DIM=31
if %T_MONTH%==8 Set /A DIM=31
if %T_MONTH%==9 Set /A DIM=30
if %T_MONTH%==10 Set /A DIM=31
if %T_MONTH%==11 Set /A DIM=30
if %T_MONTH%==12 Set /A DIM=31
IF %T_DAY% LEQ 0 SET /A T_DAY=%T_DAY%+%DIM%
IF %T_DAY% LSS 10 SET T_DAY=0%T_DAY%
IF %T_MONTH% LSS 10 SET T_MONTH=0%T_MONTH%
set YYYYMMDD=%T_YEAR%%T_MONTH%%T_DAY%
md "\\PC30\d\Sbor\%YYYYMMDD%"
robocopy \\Server01\e\3d "\\R30\d\Sbor\%YYYYMMDD%" *.avi *.mov /S /MAXAGE:1 /R:3
:: MAXAGE:1 означает что файлы брать не старше 1 суток
:: ключ R я ограничил 3, иначе по умолчанию значение попыток скопировать файл равно ::миллиону, а мне такое не надо
Комментариев нет:
Отправить комментарий