Что нового

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

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
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

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

Medic84

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

Medic84

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

madmasles

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

Medic84

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

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

madmasles

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

Medic84

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

CreatoR

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

SECTOR

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

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
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 575
Репутация
335
Redline
Да, да... Работа кипит =) Осталось только прикрепление основных функций и версия 2 готова :ok:


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

Medic84

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

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

SECTOR

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

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

Medic84

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

SECTOR

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

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

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

Medic84

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

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

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

SECTOR

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

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