Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 21.11.2016
Сообщений: 1

Копирование новых файлов каждые 30 минут

21.11.2016, 19:32. Показов 5172. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Знатоки, приветствую.
Помогите пожалуйста реализовать задачу.
Есть два каталога:
"Cat-1"
"Cat-2"
В каталог "Cat-1", каждые 5 минут сваливаются всякие разные непонятные файлы. Задача в том, чтобы написать скрипт, который я буду запускать в шедулере каждые 30 минут.
Сам скрипт должен искать в каталоге "Cat-1" файлы, начинающиеся с Английской буквы I, с любым расширением, которые свалились в данный каталог с момента последнего запуска скрипта (30 минут) и копировать (не перемещать) все подходящие под правило файлы в каталог "Cat-2".
Каталог "Cat-1" всегда пухнет новыми файлами, заменяемых файлов нет, дата создания всегда соответствует фактическому времени падения файла в каталог "Cat-1".
Помогите плиз с написанием скрипта.
Всем неравнодушным - огромный кармаплюс!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2016, 19:32
Ответы с готовыми решениями:

Копирование файла каждые 30 минут с добавлением к имени копии даты и времени копирования
Добрый день дорогие гуру. Задача стоит не легкая и не простоя(для меня). Необходимо делать бэка файла из одной папку в другую каждые...

Удаление файлов из определенной папки каждые 10 минут
Добрый день! Прошу вас помочь создать Батник который удаляет через каждых 10 минут из определенной папки все файлы, которые были созданы....

Robocopy GUI: копирование только новых файлов
Помогите разобраться с Robocopy GUI.Какие команды лучше прописать. Нужно сделать копию папки с сервака куда падают бекапы с базы в архиве....

4
 Аватар для b0gus
741 / 339 / 134
Регистрация: 17.03.2014
Сообщений: 841
23.11.2016, 23:29
написать скрипт, который я буду запускать в шедулере каждые 30 минут.
POSTREALITY, вот такой инвариант robocopy.exe предлагаю
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
::-------- file must be save in plain text, codepage 866 aka OEM
@echo off &@prompt $g
cls
SetLocal EnableExtensions EnableDelayedExpansion
pushd "%~dp0" || (echo.%~nx0: не могу перейти в каталог "%~dp0" &pause&exit /b 1)
 
:: %d_State% каталог для ведения статистики, создаётся в каталоге со скриптом
:: не удалять содержимое каталога %d_State%!
set "d_State=STATE"
if NOT exist "%d_State%" md "%d_State%" || (echo.%~nx0: не могу создать каталог "%d_State%" &pause&exit /b 1)
 
:: %f_LOG% файл - журнал работы, лежит в каталоге %d_State%
set "f_LOG=%d_State%\%~n0.LOG"
if NOT exist "%f_LOG%" >nul 2>nul copy nul "%f_LOG%" || (echo.%~nx0: не могу писать в файл "%f_LOG%" &pause&exit /b 1)
 
:: %f_Snapshot% снимок скопированных файлов ПРЕДЫДУЩЕГО запуска скрипта,
:: лежит в каталоге %d_State%
set "f_Snapshot=Snapshot"
 
:: %SYSLOG% что-то вроде макроса для журналирования
set "SYSLOG=call:logged"
%SYSLOG% "начало работы"
 
:: %d_Source% в этот каталог каждые 5 минут
:: сваливаются всякие разные непонятные файлы
set "d_Source=диск:\путь\cat-1"
if "%d_Source:~-1%" == "\" set "d_Source=%d_Source:~0,-1%"
if NOT exist "%d_Source%" (
  %SYSLOG% "нет каталога-источника '%d_Source%'"
  goto ExitError
)
 
:: скрипт должен копировать (не перемещать) все подходящие
:: под правило файлы в каталог %d_Destination%
set "d_Destination=диск:\путь\cat-2"
if "%d_Destination:~-1%" == "\" set "d_Destination=%d_Destination:~0,-1%"
if NOT exist "%d_Destination%" (
  %SYSLOG% "нет каталога-приёмника '%d_Destination%'"
  goto ExitError
)
 
if "%d_Source" == "%d_Destination%" (
  %SYSLOG% "каталог-приёмник совпадает с каталогом-источником '%d_Destination%'"
  goto ExitError
)
 
:: скрипт должен искать в %d_Source% файлы,
:: начинающиеся с Английской буквы I, с любым расширением
set "mask-file=I*.*"
 
if NOT exist "%d_State%\%f_Snapshot%" (
  %SYSLOG% "первый запуск, создаём снимок копирумых файлов"
  >nul copy nul "%d_State%\%f_Snapshot%"
)
:: %$%  снимок скопированных файлов ТЕКУЩЕГО запуска скрипта,
:: лежит в каталоге %temp%
set "$=%temp%\%f_Snapshot%"
 
:: %CNT%    скопировано файлов в ТЕКУЩЕМ запуске скрипта
:: %ERROR%  кол-во ошибок копирования файлов в ТЕКУЩЕМ запуске скрипта
set /a CNT=0,ERROR=0
 
:: сканируем каталог %d_Source% на предмет нужных файлов
for /f "usebackq tokens=*" %%v in (`2^>nul dir "%d_Source%\%mask-file%" /a:-d /b`) do (
  call :GetLine "%d_Source%\%%~v"
  rem !GetLine! содержит что-то типа
  rem "<имя файла>|<длина файла>|<timestamp файла>"
  rem ЕЖЕЛИ этого файла НЕТ в снимке файлов ПРЕДЫДУЩЕГО запуска скрипта
  rem ТО скопируем этот файл в каталог назначения
  <"%d_State%\%f_Snapshot%" >nul find /c "!GetLine!" 
  if !ERRORLEVEL! == 1 call :copy2destintion "%d_Source%\%%~v" && (
          rem удалось скопировать файл, отметим это
          set /a CNT+=1 
          %SYSLOG% "'%d_Source%\%%~v'")
  echo:"!GetLine!"
)>"%$%"
 
:: переписываем снимок скопированных файлов
>nul 2>nul move /y "%$%" "%d_State%\%f_Snapshot%"
goto ExitOK
-----------
:copy2destintion    %1 имя файла
  >nul copy /y /b "%~1" "%d_Destination%\%~nx1" && exit /b 0
  >nul timeout /t 5
  >nul copy /y /b "%~1" "%d_Destination%\%~nx1" && exit /b 0
  %SYSLOG% "ошибка копировании '%~1'"
  set /a ERROR+=1
exit /b 1
-----------
:GetLine        %1 имя файла 
  setlocal
  set "return=%0"
  set "return=%return:~1%"
  endlocal & set "%return%=%~nx1|%~z1|%~t1"
exit /b
-----------
:LOGGED
  >>%f_LOG% echo:%date% %time:~0,8% %~1
exit /b
-----------
:ExitError
  SetLocal DisableDelayedExpansion
  %SYSLOG% "завершение работы, АВАРИЯ!"
  %SYSLOG% " "
  popd
exit /b 2
-----------
:ExitOK
  SetLocal DisableDelayedExpansion
  %SYSLOG% "файлов: %CNT%"
  if %ERROR% NEQ 0 (
    %SYSLOG% "завершение работы, количество ошибок при копировании: %ERROR%"
  ) else (
    %SYSLOG% "завершение работы, OK!"
  )
  %SYSLOG% " "
  popd
exit /b 0
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
26.11.2016, 00:23
Цитата Сообщение от b0gus Посмотреть сообщение
POSTREALITY, вот такой инвариант robocopy.exe предлагаю

через опции robocopy можно выбрать всё тоже самое, в том числе циклический перезапуск и логирование.
А чтобы окно не мешало можно запустить в скрытом режиме.
0
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 11
22.12.2016, 14:14
Цитата Сообщение от b0gus Посмотреть сообщение
...вот такой инвариант robocopy.exe предлагаю...
Доброго времени суток, у меня потребности как у автора тема. Взял вот ваш скрипт, подставил свои значения папок и маски поиска файлов, но скрипт не хочет работать, ни ошибки, ни результата не выдает. Создает только папку STATE и в ней файл лог с записью - "Начало работы".
0
 Аватар для b0gus
741 / 339 / 134
Регистрация: 17.03.2014
Сообщений: 841
22.12.2016, 19:20
Цитата Сообщение от f1r3man Посмотреть сообщение
подставил свои значения папок и маски поиска файлов
опубликуйте текст вашего скрипта
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.12.2016, 19:20
Помогаю со студенческими работами здесь

Копирование только новых и модифицированных файлов с сохранением структуры каталогов
драссти бьюсь об .BAT второй день цель - собрать батник с целью копирования большого количества подкаталогов и файлов из сетевого диска...

Проверка каждые 5 минут
Можно ли с помощью CMD/BAT сделать такое. Система: windows 10 Скрипт каждые 5 минут делает проверку файлов в папке. Файлы в папке...

Запуск скрытого батника через каждые 30 минут
Привет знатоки и кулибины. Помогите нубу разобраться вот с такой задачей: Нужен запуск скрытого батника чтобы он запускал второй батник...

Создать задание которое будет запускаться каждые 2-4-8-16 и. т. д. минут
Вот такое задание: Создать задание которое будет запускаться каждые 2-4-8-16 и. т. д. минут

Каждые 30 минут открывать последний файл *.pdf, который попал в папку
Здравствуйте, Есть следующая задача, каждые 30 минут в папке (допустим на рабочем столе) появляется .pdf файл (каждий раз разное имя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru