Что нового

SynFolders - программа для синхронизации папок

Medic84

Омега
Команда форума
Администратор
Сообщения
1,580
Репутация
335
AutoIt: 3.3.6.1
Версия: 2.0.0.5
Категория: Автоматизация
Описание: Простая программа для синхронизации 2х папок.
Сравнивает папки Source и Destination, и если в Destination есть файлы у которых отличная дата модификации от Source или вообще не достает файлов, то копирует их.
Программа может вести логирование по скопированным файлам.
Количество папок для проверки ограниченно количеством секций в INI файле.
Screenshot:
История версий:
Код:
===Версия 2.0.0.5===
- Автозапуск
- Заработало удаление папок, и разрешил проблему с пустыми папками
- Двусторонняя синхронизация
- Привел в коде порядок (что бы не стыдно было показывать  ;D)
- Присвоил дочерние окна к формам настроек и добавления задания
- При выборе папок, теперь есть опция "Создать папку"

===Версия 2.0.0.4===
- Добавлена поддержка расширений
- Изменение записей
- GUI с процессом теперь прозрачное
- Убраны мелкие ошибки в программе (в сохранении, открытии, выборе папок и т.п.)
- Починено удаление (теперь после удаления можно нормально добавлять записи)
- Добавлен пункт в трей "Показать окно"

===Версия 2.0.0.3===
-Многочисленное исправление ошибок
-Переписанные логи
-Сделан GUI
-Сохранение, открытие файлов со списками папок
-Автоматическое открытие последнего файла, который использовался
-Окна Добавления папок, окно настроек
-Настраиваемый период проверки

===Версия 1.0.1.7===
-Первый публичный релиз, и тот с ошибками  :D

Источник: EXE (v.2.0.0.5)

Автор(ы): Medic84

P.S. От себя добавлю, что писалось в первую очередь для себя. Я пользуюсь сервисом DropBox, и вручную надоело копировать файлы и папки для синхронизации. А когда вообще забываешь - так это катастрофа :smile:
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Ща потестим) наверно полезная штука)
 
Автор
Medic84

Medic84

Омега
Команда форума
Администратор
Сообщения
1,580
Репутация
335
Забыл написать.
В Folders.ini записываются все папки.
Код:
["Название секции" - не важно]
Source=C:\EleanorServ\www\medlab.nu\templates\LighSteel   - папка откуда сверять
Destination=F:\DropBox\www\LighSteel    - папка с чем сверять
 
Автор
Medic84

Medic84

Омега
Команда форума
Администратор
Сообщения
1,580
Репутация
335
Верно указал папки?
Да.. Программа сыровата... Надо допиливать - пока лето :laugh:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
Medic84,
Исходника не будет?
 
Автор
Medic84

Medic84

Омега
Команда форума
Администратор
Сообщения
1,580
Репутация
335
Ну уж показал бы код что ли :whistle:

madmasles
Мне стыдно его показывать :-[
Ну была, ни была...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
Medic84,
Я добавил:
Код:
;...
Func _FindFiles($sRoot, $sFol2, $sFile)
	Local $FileList, $hOpen, $DateTime
;...
Ругаться перестал. :smile:
 
Автор
Medic84

Medic84

Омега
Команда форума
Администратор
Сообщения
1,580
Репутация
335
madmasles
Эх.. Объявления... В 2.0 исправлю))
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,670
Репутация
2,463
Medic84 [?]
Верно указал папки?
Верно или нет, это особо не важно, когда пишешь код, должен учитывать все ситуаций, программа не должна вылетать при отсутсвий файлов или записей в них, это как минимум.
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
OffTopic:
Классная штука этот DropBox! Да еще если в связке с AutoIt... :smile:
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
370
Medic84
Код:
(116) : ==> Variable used without being declared.:
FileWrite($hOpen, $DateTime & "?????? ?? ???? ?????????????????. ??? ?? ?????.")
FileWrite(^ ERROR
Буду следить за развитием :smile:
Не хватает GUI с выбором папок, типа такого:
Код:
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <ProgressConstants.au3>

$hGUI = GUICreate('2 folders', 500, 160, -1, -1)

$hLabelSource = GUICtrlCreateLabel('Source:', 10, 10, 100, 21)
$hSourceInput = GUICtrlCreateInput(@ScriptDir, 10, 35, 480, 17, $ES_READONLY, $WS_EX_STATICEDGE)

$hLabelDestination = GUICtrlCreateLabel('Destination:', 10, 60, 100, 17)
$hDestinationInput = GUICtrlCreateInput(@ScriptDir & '\Dest', 10, 85, 480, 17, $ES_READONLY, $WS_EX_STATICEDGE)

$hStartButton = GUICtrlCreateButton('Start', 390, 120, 100, 30, $BS_DEFPUSHBUTTON+$BS_FLAT)

$hProgress = GUICtrlCreateProgress(10, 127, 360, 15, $PBS_SMOOTH)
GUISetState(@SW_SHOW)

While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = -3
			Exit
		Case $msg = $GUI_EVENT_PRIMARYDOWN
			$aCursor = GUIGetCursorInfo()
			If $aCursor[4] = $hSourceInput Then
				$fileIn = FileSelectFolder('Choose source folder', '', 0, @ScriptDir)
				If $fileIn = '' Then
					GUICtrlSetData($hSourceInput, @ScriptDir)
				Else
					GUICtrlSetData($hSourceInput, $fileIn)
				EndIf
				GUICtrlSetState($hStartButton, $GUI_FOCUS)
			ElseIf $aCursor[4] = $hDestinationInput Then
				$fileOut = FileSelectFolder('Choose destination folder', '', 1, @ScriptDir)
				If $fileOut = '' Then
					GUICtrlSetData($hDestinationInput, @ScriptDir)
				Else
					GUICtrlSetData($hDestinationInput, $fileOut)
				EndIf
				GUICtrlSetState($hStartButton, $GUI_FOCUS)
			EndIf
		Case $msg = $hStartButton
;~ 			....
	EndSelect
WEnd
Из предложений - добавить поддержку архивов (хотя бы zip ;)). Просто я скидываю папку в архив, а потом заливаю на флешку (архив одним файлом копируется быстрее). Тогда выйдет неплохая утилита для бэкапа.
 
Автор
Medic84

Medic84

Омега
Команда форума
Администратор
Сообщения
1,580
Репутация
335
Redline
Да, да... Работа кипит =) Осталось только прикрепление основных функций и версия 2 готова :ok:


Поддержки zip включать не буду, т.к. архив можно засунуть в папку и синхронизировать эту папку...
 
Автор
Medic84

Medic84

Омега
Команда форума
Администратор
Сообщения
1,580
Репутация
335
Версия 2.0 готова :IL_AutoIt_1: :beer:

Пользуемся, тестируем, указываем на ошибки =) :whistle:
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Всё работает... Ошибок пока не было! :ok:

Предлагаю добавить слайдер выбора времени между "автороверками" :smile:
 
Автор
Medic84

Medic84

Омега
Команда форума
Администратор
Сообщения
1,580
Репутация
335
Зачем? В настройках вводите количество минут(можно с точкой) =)
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Приятная мелоч :smile:

В настройках вводите количество минут(можно с точкой) =)
Не заметил эту кнопку :rofl:

Еще имхо будет хорошо если в трей-меню появится пункт "Показать окно" :smile:
Еще (опять имхо) будет круто если появится фильтр расширений в каждом задании типа: mp3/rar/zip/7z/avi... :smile:
 
Автор
Medic84

Medic84

Омега
Команда форума
Администратор
Сообщения
1,580
Репутация
335
Обновил до версии 2.0.0.4 Скачать

Что изменилось:
Код:
- Добавлена поддержка расширений
- Изменение добавленных записей
- GUI с процессом теперь прозрачное
- Убраны мелкие ошибки в программе (в сохранении, открытии, выборе папок и т.п.)
- Починено удаление (теперь после удаления можно нормально добавлять записи
- Добавлен пункт в трей "Показать окно"

SECTOR, видимо единственный испытатель :D

Внимание! Опрос!
Требуется ли двусторонняя синхронизация?
Файлы будут синхронизироваться из 2х папок сразу, а заменять друг друга по принципу - у кого дата модификации больше, тот и выиграл. На данный момент папка Destination используется только для хранилища.
 

SECTOR

Продвинутый
Сообщения
399
Репутация
59
Требуется ли двусторонняя синхронизация?
А что если поставить на усмотрение пользователя, например в одном задании я хочу "двухсторонюю синхронизацию" а в другом не хочу :smile:

SECTOR, видимо единственный испытатель :D
:smile: :smile: :smile:
 
Верх