Что нового

Автоматическое копирование с USB

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
MusicMan_08
еще ничего предложено не было. тебе показали как в трее появляется сообщение.
у тебя картридер, как я понял. он уже как устройство. значит воспринимается скриптом как диск, ты вставил одну флешку. скрипт составил список устройств, но по факту скопировать можно только с реально вставленной флешки. поэтому и появляется ошибка 4 - не все файлы скопированы. значение ошибок есть в описании функции.
в окно можно добавить дополнительное инфополе. где будут отображаться устройства, с которых произведено копирование полностью. это мелочь.
еще раз про скрипт http://autoit-script.ru/index.php/topic,16447.msg101597.html#msg101597
он всего лишь определяет подключенные устройства. не более того.
можно соединить с ним, но тогда нужно будет, чтобы программа работала постоянно. не вижу смысла в этом.
если имена флешек меняются, то можно просто сортировать по дате копирования.
одна общая папка, а в ней папки с именами - дата и время копирования..
если ничего не подходит. то другого варианта у меня нет. :smile:


Добавлено:
Сообщение автоматически объединено:

вот второй вариант. учитывающий, надеюсь, что к компу может быть подключен картридер,в котором не все слоты заняты. скрипт проверяет слоты на наличие файлов и формирует массив только из тех, в которые подключены носители с информацией на "борту"
скрипт сначала считывает имя флешки, если нет имени, то использует букву диска для именования конечной папки.
в окне добавлена строка, в которой будут отображаться системные буквы флешек, с которых уже скопирована информация.
картридера нет, проверить до конца не могу. но, вроде как, должно работать как задумано
http://autoit-script.ru/index.php?action=downloads;sa=view;down=375
 
Автор
M

MusicMan_08

Новичок
Сообщения
28
Репутация
0
joiner
еще раз про скрипт Re: Автоматическое копирование с USB
он всего лишь определяет подключенные устройства. не более того.можно соединить с ним, но тогда нужно будет, чтобы программа работала постоянно. не вижу смысла в этом.
Для меня как раз-таки важно, чтобы программа работала постоянно - фоном: предполагается, что человек, который наснимал материал (человек 20), сам приносит флешку (это может быть и ночью), сам копирует, то есть нужно по максимуму упростить действия. Вот почему изначально была выбрана схема ----- подключить флешку ----- ввести номер ------ все. Не сочтите за занудство, но если заставлять людей искать какой-то экзешник на рабочем столе или еще где-нибудь, нажимать потом куда-то, увидеть какие-то ошибки о подключении... Все это может вызвать определенные проблемы.
у тебя картридер, как я понял. он уже как устройство. значит воспринимается скриптом как диск, ты вставил одну флешку. скрипт составил список устройств, но по факту скопировать можно только с реально вставленной флешки
у меня 4 картридера по одному слоту для SD в каждом. Не все могут использоваться сразу.
если имена флешек меняются, то можно просто сортировать по дате копирования.
это точно не подойдет, так как это неинформативно. Поясню: в день к примеру проводится 12 съемок - как узнать в какой папке какой материал в итоге? В папке будет просто куча чисел, и это будет путаница. А если бы было как изначально задумано - то в папке к примеру 1 - материал с SD номер 1 и тд.
в окне добавлена строка, в которой будут отображаться системные буквы флешек, с которых уже скопирована информация.
Это реально удобно, спасибо!
если ничего не подходит. то другого варианта у меня нет.
Вы и так очень много помогли!
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
MusicMan_08

А я бы сделал большое окно с номерами флешек (как на скрине)
Вставил флешку - нажал кнопку с номером - вместо нее появился прогресс-бар с отображением копирования
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
MusicMan_08
Это пример
http://fotoifolder.ru/view_foto/i2-z_-u_vfn8/
 
Автор
M

MusicMan_08

Новичок
Сообщения
28
Репутация
0
WSWR
По-моему крутая идея, только я вот не пойму в теории:
вот я вставил 3 флешки разом - нажимаю на 1,3 и 5 (номера гипотетических флешек). Как скрипт сообразит, какая SD 1, какая 3, а какая 5? В этом случае нужно будет наверное вставлять по очереди?
Ну все-равно, пусть даже и так, это реально классно.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
либо имена флешек постоянные либо меняются..значит нужно сделать чтобы были постоянные. только тогда можно достичь эффекта.
чтобы программа висела в процессе это сделать не сложно. но еще раз скажу, если будут запускаться копии копирования, то с каждой копией скорость копирования будет падать. записывается ведь на один жесткий диск. и в итоге скорость будет равно что и при последовательном копировании.
MusicMan_08

ты можешь сделать так, чтобы имена карт не менялись? если да, то код, который я предложил будет работать.. только поставить его в цикле на отслеживание и все. подключил флешку, скрипт увидел ее и начал копировать.
но опять же. что с именем флешки? если оно меняется, то пользователю все равно придется в окне выбирать номер флешки. что будет соответствовать выбору папки, куда будет копироваться. если вариант с выбором папки тебя устроит, то все опять же не сложно сделать.
я поправлю скрипт
будет одно поле для ввода номера. и в общей папке будет создана папка с номером флешки, а в ней папки с именем даты съемки. так пойдет?


Добавлено:
Сообщение автоматически объединено:

MusicMan_08 [?]
Как скрипт сообразит, какая SD 1, какая 3, а какая 5
вот про это и речь. когда дело с обычными флешками, то им можно назначить имена. а тут сложно. тут только буквы дисков для подключения
насчет запуска экзешника все равно нужно рассмотреть вариант. не думаю что люди настолько глупы, чтобы не найти на рабочем столе нужный ярлык и запустить прогу. все все равно слишком гладко не бывает
 
Автор
M

MusicMan_08

Новичок
Сообщения
28
Репутация
0
joiner
ты можешь сделать так, чтобы имена карт не менялись?
Нет, это невозможно. SD карты перед съемкой обязательно должны быть отформатированы.
пользователю все равно придется в окне выбирать номер флешки. что будет соответствовать выбору папки, куда будет копироваться
да, это как раз то, что мне нужно, но выбор папки - это ведь не значит, что пользователь должен шариться по файловой системе и искать нужную папку. Было бы классно, если бы выбор папки соответствовал нажатию 1 кнопки.
будет одно поле для ввода номера. и в общей папке будет создана папка с номером флешки, а в ней папки с именем даты съемки. так пойдет?
более чем подойдет. А если к примеру в этот день будет создано еще одно копирование с этой же флешки, то поменяется только дата или будет создана папка с новым именем (я имею ввиду была папка 1, затем 1-1, 1-2...)? Хотелось бы, чтобы менялась только дата, а папки с номерами флешек были созданы единожды и более не менялись.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
MusicMan_08
вобщем я переделал скрипт. склеил с кодом определения подключения.
суть работы:
скрипт постоянно висит в процессе слежения за подключением
при подключении флешки появится окно с предложением ввести номер флешки
если флешек будет несколько, то жмем "Добавить" и после этого подключаем еще флешку. опять появится окно. вводим номер. ну и так далее.
когда подключили последнюю или просто одну нужную флешку и ввели ее номер, жмем уже не "Добавить" а "Копировать".
Все данные с подключенных флешек будут скопированы в одну папку C:\Video_usb
в которой будут папки под номерами, соответствующими номерам флешек. в них будут подпапки уж с датой и временем копирования.
тестируй. код еще до конца не отрепетирован..нужны твои тесты. у меня все вроде сработало.
исходник
 
Автор
M

MusicMan_08

Новичок
Сообщения
28
Репутация
0
joiner
Спасибо за скрипт!
Если можно некоторые моменты:
1) можно после того как я нажму копировать сразу начиналось копирование, и не нужно было нажимать "Старт"?
2) можно ли так сделать, чтобы после ввода номеров флешек я мог нажать Enter и это соответствовало нажатию на кнопку "Копировать"?
3) можно ли сделать так, чтобы в папке с датой не было каталога с названием флешки, а сразу содержимое флешки?
4) я наверное ступил, когда просил сделать вначале номер флешки, а потом дату... Если например у меня 2 съемки в день, и я имею 30 номеров флешек - я должен пошариться по каждому номеру в поисках нужной мне даты. Если это не очень сложно будет для Вас, немогли бы Вы сделать так, чтобы в начале была дата копирования без времени (типа 01_01_2014), а в ней уже были номера флешек, и если одна и таже флешка использовалась несколько раз в день - то добавлять к номеру флешки какой-нибудь суффикс типа 1, 1-1, 1-2?
5) можно ли, чтобы в инфо-строке отображалось не буква флешки, а номер? Типа обработано флешки 1, 2 и т.д.?

А так скрипт супер, почти то, что я и хотел. Еще раз спасибо.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
да, все это не сложно сделать. но смогу, скорее всего, только на выходных.
 
Автор
M

MusicMan_08

Новичок
Сообщения
28
Репутация
0
joiner
смогу, скорее всего, только на выходных.
Нет проблем, мне не срочно.
И еще, если не затруднит, можно ли провернуть такое, чтобы можно было копировать не все содержимое флешки, а копировать по фильтру, естественно заранее в коде прописанному. По идее мне нужны только файлы mov, mp4, mts и все. И будет ли это работать с вложенными директориями?
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
скрипт готов. что реализовано дополнительно:
если подключены нужные флешки и отключим одну из них, то появится окно с предложением:
Отменить все - все задание будет отменено. флешки нужно будет подключать заново
Добавить устройство - скрипт будет ожидать подключения новой флешки
Начать копирование - будет произведено копирование с оставшихся флешек.
при отключении флешки она будет исключена из списка копирования. если была подключена только одна флешка, то это окно не появится. задание будет отменено автоматически.
структура создания папок будет такая как ты хотел. единственное, если в один день было несколько копирований с одного и того же номера флешки, то копия будет называться 1 Копия, 1 Копия(2) и так далее. функция создания копий не моя.
файлы со сходными именами будут получать свои копии. тут реши сам. в функции копирования есть параметр для изменения.

скрипт защищен от повторного запуска. то есть, если уже запущена программа, вторую копию нельзя будет запустить. даже если переименовать экзе файл. защита основана на поиске заголовка окна (хоть и скрытого)

вобщем, тестируй..у меня под рукой была только пара флешек.
пробуй все подключить флешки и вытащить пару через одну..
в архиве исходник и скомпилированная программа.
скрипт написан сугубо для твоего случая
Скачать
 
Автор
M

MusicMan_08

Новичок
Сообщения
28
Репутация
0
Спасибо, попозже отпишусь как протестирую...
Отдельное спасибо за добавленные дополнения, я как раз подумал, что могут возникнуть такие ситуации.
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
MusicMan_08
код изменил в соответствии с последними пожеланиями. можно скачать по ссылке в моем предыдущем сообщении
 
Автор
M

MusicMan_08

Новичок
Сообщения
28
Репутация
0
Спасибо, вот вопросик назрел в ходе испытаний:
вот я вставил 2 флешки из 4-х возможных. С них пошло копирование, но вот я вспомнил, что забыл поставить еще одну, вставляю - но ничего не происходит. И только когда копирование полностью завершено, тогда всплывает сообщение с предложением ввести номер вставленной флешки. Можно ли сделать, чтобы текущее копирование приостанавливалось, я вводил номер и потом уже копирование продолжилось со всеми флешками?
У Вас похожая схема работает только при вынимании одной из флешек, а при вставке новой в процессе копирования не работает...
Еще: если флешка по каким-либо причинам не докопирована - может быть ее остановили, может быть вынули случайно - можно, чтобы было вместо сообщения "Готово", сообщения типа "Флешка номер 2 не скопирована!". Но копирование остальных продолжалось в это время. Или в инфо-поле помещалась информация также и о не скопированных флешках.
За лог и txt спасибо! То, что надо!
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
MusicMan_08 [?]
вынули случайно - можно, чтобы было вместо сообщения "Готово", сообщения типа "Флешка номер 2 не скопирована!". Но копирование остальных продолжалось в это время
это предусмотрено в самой функции. пропускать пути, которые фактически не существуют. только осталось добавить в окне инфо о номере флешки. это можно сделать

ожно ли сделать, чтобы текущее копирование приостанавливалось, я вводил номер и потом уже копирование продолжилось со всеми флешками?

"довключать" флешки во время копирования и чтобы они тоже копировались реализовать в данном коде как он есть , значит переписать все. для таких случаев нужно делать два модуля программы. один следит на включением(отключением) флешек и составляет списки копирования , второй копирует и создает отчеты...
сделать можно, но это нужно все переписывать
в данном языке нет многопоточности . все функции в программе работают последовательно.
если нужно копировать сразу со многих устройств, то лучше приобрести многопортовый usb - хаб.
так или иначе, для реализации задуманного нужно будет потратить гораздо больше времени.
 

slimwin

Новичок
Сообщения
1
Репутация
0
Здравствуйте. Подскажите можно ли сделать данную утилиту в таком виде, чтоб после того когда вставили USB носитель программа спросила имя пользователя и пароль, а затем скопировала все содержимое носителя в папку с именем данного пользователя в папку с текущей датой. Пример: C:>Иванов И. И.>12-04-2015
>13-04-2015
>18-04-2015>Фото
>Документы
>*.* (и т. д.)
>Петров П. П.>19-04-2015
Ну и так далее...
Заранее благодарен.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Зундер сказал(а):
joiner сказал(а):
в архиве исходник и скомпилированная программа.Скачать
Ссылка протухла. :( Вас не затруднит выложить исходник ещё раз?
Открываем свою папку "Загрузки", в которой содержится несколько тысяч файлов, которые я когда-то насохранял, и видимо не зря,
ищим ... и находим нужный файлик! Загружаем его сюда ... и ...
copy_usb.7z 516.81 kb
Наверное этот...
 
Верх