Страница 2 из 3

Добавлено: Сб сен 21, 2013 11:11
Avada
Хотелось бы заполучить вариант скрипта, где реализованы:
1. Возможность добавлять в список исключений объекты с путями.
2. Возможность обработки одного выделенного объекта.
То есть предусмотреть и все остальные варианты, требующие открытия соответствующего диалога.
Если в процессе выполнения скрипта получится выбирать режим добавления (с путями или без них), было бы совсем замечательно.

Добавлено: Сб сен 21, 2013 11:13
Flasher
1. %L
2. Именно выделенного, не выбранного?

Добавлено: Сб сен 21, 2013 11:17
Avada
Flasher
1. Я там кое-что уточнил ещё. Хотелось бы одним скриптом, а не двумя разными. Но если это сложно, то ладно.
2. Думал об этом. Но, наверное, лучше только выделенного. Как в самом TC принято. А то выделим одно, курсор поставим в другое место, будет путаница...

Добавлено: Сб сен 21, 2013 11:26
Flasher
Avada
Зачем двумя-то? Я лишь написал о замене параметра в кнопке.
2. Гм.. Как раз под выбранным подразумевается отсутствие выделения с постановкой курсора. Когда выделен хотя бы один объект, но курсор установлен в другом месте, то файл под курсором выбранным не считается. Так и принято в ТС.

Т.е. я так понимаю, что суть в появлении окна выбора?
Простое окно (да/нет) устроит? Или нужно, чтобы на каждой кнопке был написано предназначение?

Добавлено: Сб сен 21, 2013 11:33
Avada
Flasher
Не скриптов два, а кнопок две, оговорился.
С учётом разъяснений — можно и выбранный.
Да, хорошо бы использовать одну кнопку, а с путями или без — выбирать по ходу дела. Простое окно вполне устроит.

Добавлено: Сб сен 21, 2013 12:38
Flasher
Avada
[cut="Так:"]

Код: Выделить всё

'=================================================================================
'  Добавление имён выбранных элементов в список исключений TC с активацией фильтра
'  Параметры: %L "<путь к файлу-списку>"
'  Пример:    %L "%%COMMANDER_PATH%%\tcignore.txt"
'============================ Путь к утилите TCFS2 ===============================
TCFS2 = """%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"""
'=================================================================================
Dim WSH : Set WSH = CreateObject("WScript.Shell")
IL  = WSH.ExpandEnvironmentStrings(WScript.Arguments(1))
NL  = vbNewLine : Title = "Добавление имён в список исключений"
Msg = MsgBox("Добавлять полные пути" & NL & "к именам выбранных элементов?",_
4163, Title) : If Msg < 6 Then Quit
With CreateObject("Scripting.FileSystemObject")
  All = .OpenTextFile(WScript.Arguments(0), 1).ReadAll : Sps = All
  If  Msg = 7 Then
    For Each F in Split(All, NL) : S = S & NL & .GetFileName(F) : Next
    Sps = Mid(S, 3)
  End If : Set List = .OpenTextFile(IL, 8, True)
End With : List.Write Sps : List.Close
WSH.Run TCFS2 & " /ef ""tcm(2922) tcm(2922), eval(tcini(Configuration, " &_
"IgnoreListFileEnabled, #)) | tcm(2922)""" : Quit
Sub Quit : Set WSH = Nothing : WScript.Quit : End Sub
[/cut]

Добавлено: Сб сен 21, 2013 14:36
Avada
Flasher
Несколько файлов с путями — работает правильно.
Несколько файлов без путей — имя первого из файлов прицепляется в хвост последней имевшейся в списке исключений строки.
Один файл под курсором без пути — аналогично.
Один выделенный файл с путём — аналогично.
Один файл под курсором с путём — работает правильно.
Один выделенный файл без пути — работает правильно.

(Кстати, заголовок "Добавление имён в список исключений" полностью не отображается. У себя убрал "имён", чтобы покороче вышло.)

Добавлено: Сб сен 21, 2013 14:52
Flasher
Avada писал(а):Один выделенный файл с путём — аналогично.
Один файл под курсором с путём — работает правильно.
Не может такого быть. Это идентичные условия.
Я перед выкладкой тестировал: никаких проблем с хвостом не наблюдалось.
Версия винды, TC и интерпретатора какие?
Заголовок не влезает из-за использования шкур. Убери пробелы перед словом "Добавление".

Добавлено: Сб сен 21, 2013 15:27
Avada
Flasher
Система и интерпретатор тут абсолютно ни при чём. Я понял, в чём дело. При многократной ручной чистке списка исключений последняя пустая строка то не удалялась (и тогда всё было нормально), то удалялась (курсор помещался в конец последней имеющейся строки, и получалось присоединение). При стандартном добавлении в список для TC тут нет никакой разницы. А для скрипта — есть.
Кстати, имею предложение по содержательной части запроса. Лучше без всяких отдельных строк с расшифровкой "нет" и "да" просто вывести вопрос: "Добавить всё выбранное с путями?" Кнопка" "Да" — с путями, "Нет" — без путей. Именно в таком порядке идут кнопки в диалоге настроек, так что всё логично и понятно.
С заголовком понятно. Убрал пробелы: впритык, но влезает.

Добавлено: Сб сен 21, 2013 16:03
Flasher
Avada писал(а):При многократной ручной чистке списка исключений
Через страницу настроек ТС или редактор?
Собственно, что теперь по этому вопросу? Какие предлагаются коррективы?
Avada писал(а):Лучше без всяких отдельных строк с расшифровкой "нет" и "да" просто вывести вопрос: "Добавить всё выбранное с путями?"
Я с самого начала думал, как лучше. Написал, потом не стал исправлять (мол, какая разница, коротко и ясно).
Тогда, может, "Добавлять полный путь к именам выбранных элементов?" ?
Если же писать как ты предлагаешь, то по логике кн. "Нет" ничем не будет отличаться от кн. "Отмена".

Добавлено: Сб сен 21, 2013 16:34
Avada
Flasher писал(а):Через страницу настроек ТС или редактор?
Через страницу настроек.
Flasher писал(а):Собственно, что теперь по этому вопросу? Какие предлагаются коррективы?
А вот это не знаю. Лично я просто буду знать, что такое бывает и надо это учитывать.
Flasher писал(а):Тогда, может, "Добавлять полный путь к именам выбранных элементов?" ?
Да, вполне.

Добавлено: Сб сен 21, 2013 17:43
Flasher
Avada писал(а):А вот это не знаю.
Единственный способ с правильным форматированием - проверять последнюю строку в файле игнора на предмет наличия перевода строки. К сожалению в vbs нет возможности считывать строки с конца, а построчное считывание с начала замедлит скорость выполнения (чего мне лично не хотелось бы).
Когда я писал первый вариант скрипта, то я понимал, что ручное редактирование уже утеряет свою актуальность, ибо кроме как для тестов не потребуется.
Есть ещё грязный вариант, в котором при наличии перевода будут формироваться пустые строки: в 17-ой строке убрать красное: Sps = Mid(S, 3) либо добавить ...WriteLine... в 19-ой.

Текст сообщения поправил.

Добавлено: Сб сен 21, 2013 19:17
Avada
Flasher
Да, так явно лучше.
Пока с переводом строк заморачиваться не буду, потом попробую.
А насчёт неактуальности ручного редактирования (того, которое в диалоге) — всякие ситуации бывают. И не только связанные с тестированием. Например, чистить по прошествии времени список от ненужных больше строк мне приходилось неоднократно.

Добавлено: Пн мар 30, 2015 21:18
Flasher
Avada
Попробуй этот вариант. Помимо решения обсуждаемой проблемы добавлена поддержка имён с Юникодом.
Переводов строк в конце может быть много, останется всегда один.

Добавлено: Пн мар 30, 2015 22:58
Avada
Flasher
Спасибо, но тестированием займусь позже, когда на это время будет.