|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
(*.*) Сообщения: 36561 |
Внимание! В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема. Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно ![]() ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску) (он же прикреплен в шапке) Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
![]() Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать $sCompile_String = StringRegExpReplace($sCompile_String, '/(.*?) ".*?"', '/$1 %s')
Цитата:
|
|
Последний раз редактировалось SyDr, 16-11-2008 в 11:46. Причина: Немного изменил... Отправлено: 11:27, 16-11-2008 | #1161 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
|
|
------- Отправлено: 11:33, 16-11-2008 | #1162 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Sylver Dragon, Maza Faka,
Спасибо, оба варианта работают на ура (первый конечно по проще ![]() ![]() |
------- Отправлено: 13:49, 16-11-2008 | #1163 |
![]() Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать Ааааа... Мой вариант немного неправильный. Строку вида '/In "Yes, Right" /Icon "No" /Bin "Ok" /Comp 1' обработать правильно не сможет. С пробелами всмысле.
Можно так тогда переписать: $sCompile_String = StringRegExpReplace($sCompile_String, '/(.*?) ([^/])*', '/$1 %s ') Однако строку вида '/In array "Yes, Right" /Icon, or not icon "No" /Bin "Ok" /Comp 1' Он всё равно обработать не сможет. Хотя впринципе такую строку ничто не сможет обработать. Нужны будут какие-то спец. символы, чтобы выделять нужные куски. |
------- Отправлено: 14:04, 16-11-2008 | #1164 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Sylver Dragon,
Цитата Sylver Dragon:
![]() P.S Вот если бы ещё с первой проблемой разобраться ![]() |
|
------- Отправлено: 14:14, 16-11-2008 | #1165 |
![]() Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать StringRegExp($Clip, '(\a:\\)([^/\\<>:*?"|])*\.(txt|txt\.bk)(\n|$)')
Пока не проверял. Поясню немного: ([^\\/<>:*?"|])* - означает наличие любых символов, кроме тех, которые не могут присутствовать в имени файла. Надеюсь, что правильно записал выражение. Хотя если в буфере будет что-то типа: D:::\Bla\Text.txt - правильно обравботать не получиться. Ну, я не думаю, что кто-то будет так маньячиться. Щас немного потестирую. Стоп. пути только полные, или могут быть относительные? Пока не работает. Даже понял, почему ![]() Я немножко в ступоре)) StringRegExp($Clip, '\b:\\([^\\/<>:*?|])*')) - вот это проверит, может ли являеться ли $Clip путём к файлу. Однако расширение она учесть не сможет (точки могут быть в любом месте файла). Это уже надо сильно усложнять выражение, что приведёт к увеличению времени обработки. А это здесь явно не нужно. Щас буду думать дальше. И ещё, как вариант, проверять, путь ли в буфере, не во время вызова контекстного меню, а регулярно, во время работы программы. Т. е. если буфер изменился - проверить, путь ли в нём теперь. Я дурак. Поставил в регулярное выражение символ \ и думаю, почему неправильно обрабатывает... Всё. Вот моё окончательное слово: P. S. Только для полных путей. |
------- Последний раз редактировалось SyDr, 16-11-2008 в 16:30. Отправлено: 14:42, 16-11-2008 | #1166 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Sylver Dragon,
Цитата Sylver Dragon:
Цитата Sylver Dragon:
![]() Цитата Sylver Dragon:
$Clip = _ "C:\Testing\SomeFile.txt" & @LF & _ "Testing\OtherFile.txt" ;$Clip = ClipGet() $sExt_Pattern = '\.txt|\.txt\.bk' ;Файлы ещё могут иметь расширение txt.bk (обязательно вместе) $iEnable_Paste_Item = StringRegExp($Clip, '\b:\\([^\/<>:*?|])*(' & $sExt_Pattern & ')(\n|$)') MsgBox(0, "", "$iEnable_Paste_Item = " & $iEnable_Paste_Item) |
|||
------- Отправлено: 03:19, 17-11-2008 | #1167 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
#Region : Построение регулярного выражения $ExpandVarStrings = Opt("ExpandVarStrings", 1) $extn = "(?:\.txt|\.txt\.bk)" ; диск ("C:") $disk_1 = ".:" $disk_2 = "[a-z]:" ; UNC путь (\\server-1.domain.local) $host_1 = "\\\\[-\w.]+" $host_2 = "\\\\[-\w]+(?:\.[-\w]+)*" ; корень пути (все возможные варианты) $root_1 = "(?:$disk_1$|$host_1$)" $root_2 = "(?:$disk_2$|$host_2$)" ; путь без корня, включая имя файла $path_1 = ".*" $path_2 = "(?:\\[^\n\\]+)+" ; путь без корня, без имени файла $path_3 = "\\(?:[^\n\\]+\\)*" ; только имя файла без пути $name_3 = ".+$extn$" $name_4 = "[^\n\\]+$extn$" ; одна строки списка файлов $line_1 = "$root_1$$path_1$$extn$" $line_2 = "$root_2$$path_2$$extn$" $line_3 = "($root_2$$path_3$)$name_3$" $line_4 = "($root_2$$path_3$)$name_4$" ; варианты выражений с разной детализацией $RegExp_1 = "(?i)^(?:$line_1$(?:\n|$$))+$$" $RegExp_2 = "(?i)^(?:$line_2$(?:\n|$$))+$$" $RegExp_3 = "(?i)^$line_3$(?:\n\1$name_3$)*$$" ; файлы с одного ресурса (один путь) $RegExp_4 = "(?i)^$line_4$(?:\n\1$name_4$)*$$" ; файлы с одного ресурса (один путь) Opt("ExpandVarStrings", $ExpandVarStrings) #EndRegion $sClip = ClipGet() ConsoleWrite($sClip &@CRLF&@CRLF) ConsoleWrite(StringRegExp($sClip,$RegExp_1) &': "'& $RegExp_1 &'"'&@CRLF) ConsoleWrite(StringRegExp($sClip,$RegExp_2) &': "'& $RegExp_2 &'"'&@CRLF) ConsoleWrite(StringRegExp($sClip,$RegExp_3) &': "'& $RegExp_3 &'"'&@CRLF) ConsoleWrite(StringRegExp($sClip,$RegExp_4) &': "'& $RegExp_4 &'"'&@CRLF) Цитата Creat0R:
$sCompile_String = '/In "Yes" /Icon "No" /Bin "Ok" /Comp 1' $sCompile_String = StringRegExpReplace($sCompile_String,' +("[^"]*"|[^/ ]+)',' %s') ConsoleWrite($sCompile_String & @CRLF) ![]() |
||
Последний раз редактировалось amel27, 17-11-2008 в 06:38. Отправлено: 06:26, 17-11-2008 | #1168 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27,
Цитата amel27:
![]() ![]() По поводу скорости, мне главное чтобы если первая строка не совпадает с запросом, то проверка заканчивалась. Моя первая попытка сделать пдобную проверку, очень долго возвращала результат в случае если б.обмена содержал большой кусок текста (не пути к файлам). P.S Победители конкурса по Регулярным выражениям становятся... RegExp номер 3 и номер 4! ![]() ![]() Цитата:
![]() |
||
------- Отправлено: 13:29, 17-11-2008 | #1169 |
![]() Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
![]() Цитата Creat0R:
А как насчёт того, чтобы проверять не во время вызова контекстного меню, а прямо перед вставкой? Т. е. если содержимое буфера не соответсвует шаблону - выдать сообщение об этом... Цитата:
Плюс ещё сделать предположение, что если первые несколько строк - пути к файлам, значит и всё остальное тоже. |
|||
Отправлено: 21:00, 17-11-2008 | #1170 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ | FOX RED | Защита компьютерных систем | 67 | 21-11-2007 15:05 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.2] AutoIt скрипты | Dirk Diggler | AutoIt | 505 | 02-12-2006 11:00 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|