Автор Тема: [Баг] Зависание процесса при функции DirCopy  (Прочитано 12255 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5349
  • Репутация: 2691
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #15, Отправлен: Октябрь 11, 2015, 10:05:09 »
У меня на Win7x86, Autoit 3.3.14.2, C:\ и E:\ на одном диске этот скрипт выполняется нормально.

InnI, замените в вашем коде расширение zzz на html и уже не работает копирование папки. Странность какая-то...

Да, странность есть и она, похоже, системная. Причём эти проблемы наблюдаются только с расширениями htm и html. Пробовал другие расширения: txt, xml, mht, zzz - проблем нет - всё копируется и удаляется быстро.

Проблема не связана с AutoIt.


Думай, прежде чем говорить.

Русское сообщество AutoIt

Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #15 Отправлен: Октябрь 11, 2015, 10:05:09 »

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2399
  • Репутация: 411
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #16, Отправлен: Октябрь 11, 2015, 11:17:36 »
копирую папку системными средствами - "копировать - вставить" - минута времени
"вырезать - вставить" - минута времени
XCOPY - ~3мин
пользовательская функция (FileRead-FileWrite) - от 2 мин. 40 сек. до 3 мин. 30 сек.
функция DirCopy- стабильно "до утра".
Это не проблема AutoIT это проблема одной функции, которая работает по принципу - "открыть папку, выделить все файлы, подготовка к копированию(ждем долго долго), копировать все файлы".
Да, по сути бага нет. Есть неэффективная работа функции (мягко говоря)
Вот и хотелось бы, чтобы , если есть возможность, этот момент был улучшен.
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Оффлайн Andrey_A [?]

  • Новичок
  • *
  • Сообщений: 95

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • TC IMAGE & GROPE
    • Награды
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #17, Отправлен: Октябрь 11, 2015, 12:48:21 »
Yashied  [?]
Цитировать
Попробуйте удалить вот это:
HKEY_CLASSES_ROOT\htmlfile\shellex\{8895B1C6-B41F-4C1C-A562-0D564250836F}
У меня этот ключ не удаляется... или только через безопасный режим пробовать... Но вдруг без него что-то перестанет работать, - реестр штука тонкая...

Нашёл обход этого глюка:

Код: AutoIt [Выделить]
; Копирование папки с помощью xcopy
Func _DirCopy($sSrc,$sDest)
  RunWait('xcopy /H /E /C /I /S /K /X /T /Y'&' "'&$sSrc&'" "'&$sDest & '"','',@SW_HIDE)
EndFunc
; Удаление папки с помощью cmd
Func _DirRemove($sSrc)
  RunWait(@Comspec&' /C RMDIR /S /Q "'&$sSrc&'"','',@SW_HIDE)
EndFunc


А вот для перемещения пока нет варианта, т.к. MOVE не работает на разных локальных дисках, т.е. не произойдёт перемещение:

Код: AutoIt [Выделить]
_DirMove('E:\15_1','C:\1\15_1')

Func _DirMove($sSrc,$sDest)
  RunWait(@Comspec&' /C MOVE /Y "'&$sSrc&'" "'&$sDest&'"','',@SW_HIDE)
EndFunc


Может есть другое какое-то решение по перемещении папки?

joiner  [?]
Цитировать
Вот и хотелось бы, чтобы , если есть возможность, этот момент был улучшен.
Я двумя руками за!

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2399
  • Репутация: 411
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #18, Отправлен: Октябрь 11, 2015, 13:07:22 »
Andrey_A
Используй пользовательские функции и забудь про консоль и  dircopy
Премещение это копирование и потом удаление. Или одновременно - копируешь, удаляешь ..... и так далее

Русское сообщество AutoIt

Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #18 Отправлен: Октябрь 11, 2015, 13:07:22 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7799
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #19, Отправлен: Октябрь 11, 2015, 13:13:54 »
joiner  [?]
Цитировать
Премещение это копирование и потом удаление
Если путь назначения находится на другом диске.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2399
  • Репутация: 411
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #20, Отправлен: Октябрь 11, 2015, 13:27:04 »
CreatoR  [?]
Цитировать
Если путь назначения находится на другом диске.
когда копируешь своей функцией, то без разницы где что находится. прописываешь алгоритм и вперёд.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7799
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #21, Отправлен: Октябрь 11, 2015, 13:41:45 »
joiner  [?]
Цитировать
когда копируешь своей функцией
Что значит своей, речь про байтовое чтение и запись файла? Не вижу в этом смысла.
Я говорил про функции File/DirMove/Move.

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2399
  • Репутация: 411
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #22, Отправлен: Октябрь 11, 2015, 14:36:32 »
в пределах локального диска - да. так как перемещение это не копирование, а "перезразметка" положения файла\папки
 обсуждаемая функция проблемно воспроизводит копирование, не важно в пределах локального диска или при копировании на другой локальный\физический диск

Русское сообщество AutoIt

Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #22 Отправлен: Октябрь 11, 2015, 14:36:32 »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5349
  • Репутация: 2691
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #23, Отправлен: Октябрь 11, 2015, 15:15:55 »
Народ, заканчиваем флудить.


Добавлено: Октябрь 11, 2015, 15:22:46
Если рассуждать логически, то получается, что AutoIt тут ни при чем, т.к. все типы файлов кроме .html DirCopy() обрабатывает без задержек.

У меня на Win7x86, Autoit 3.3.14.2, C:\ и E:\ на одном диске этот скрипт выполняется нормально. Время выполнения всего скрипта по данным SciTE Time: 369.2.
« Последнее редактирование: Октябрь 11, 2015, 15:25:38 от Yashied »

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2399
  • Репутация: 411
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #24, Отправлен: Октябрь 11, 2015, 15:28:07 »
Yashied
прошу извинить за, возможно, лишнее обсуждение, но так или иначе приходим к некорректной работе функции при копировании файлов с расширением .html
поэтому предложение "выяснить почему так у разработчиков" остается. Можно ли задать вопрос на официальном форуме? А может быть тема эта уже обсуждалась там.

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5349
  • Репутация: 2691
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #25, Отправлен: Октябрь 11, 2015, 15:52:59 »
А кто на какой версии тестировал?

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2399
  • Репутация: 411
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #26, Отправлен: Октябрь 11, 2015, 16:08:53 »
3.3.12.0 - 3.3.15.0

Русское сообщество AutoIt

Re: [Баг] Зависание процесса при функции DirCopy
« Ответ #26 Отправлен: Октябрь 11, 2015, 16:08:53 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
11 Ответов
6356 Просмотров
Последний ответ Ноябрь 06, 2009, 12:35:10
от amel27
5 Ответов
3886 Просмотров
Последний ответ Август 04, 2010, 14:24:15
от SyDr
8 Ответов
3944 Просмотров
Последний ответ Август 13, 2010, 22:35:26
от CreatoR
3 Ответов
3641 Просмотров
Последний ответ Ноябрь 25, 2010, 12:47:09
от beaver
3 Ответов
4260 Просмотров
Последний ответ Август 01, 2011, 15:47:34
от snoitaleR
6 Ответов
3782 Просмотров
Последний ответ Август 14, 2011, 00:27:49
от madmasles
10 Ответов
6552 Просмотров
Последний ответ Октябрь 26, 2011, 09:55:30
от Yashied
11 Ответов
3992 Просмотров
Последний ответ Ноябрь 02, 2011, 01:30:29
от AZJIO
0 Ответов
1219 Просмотров
Последний ответ Май 25, 2013, 22:21:45
от Gzzk
3 Ответов
1830 Просмотров
Последний ответ Февраль 20, 2014, 00:34:19
от Shinoby