View previous topic :: View next topic |
Author |
Message |
tsviolen
Joined: 19 Dec 2010 Posts: 7
|
(Separately) Posted: Sun Dec 19, 2010 16:26 Post subject: как управлять закрытием вкладок |
|
|
Здравствуйте. Скажите, как при помощи командной строки (или из сторонней программы, послав сообщение в Тотал) выполнить следующее:
- проверить все пути вкладок на предмет их указания на конкретный путь (на конкретный диск);
- закрыть определённые вкладки, например, под определёнными номерами, независимо от того, являются ли они активными, и независимо от того, в какой они панели.
Версия Тотала: 7.56а |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Dec 19, 2010 16:46 Post subject: |
|
|
Не понятно для чего проверка нужна. Лучше конкретный пример привести. По вкладкам сложно, потому что нет внутренней команды "Сохранить вкладки активной панели в файл". Если только продолжение - OPENTABS <filename>.. |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Sun Dec 19, 2010 17:16 Post subject: |
|
|
Имеется такой скриптик, который может быть запущен и из командной строки: Code: | c:\path\to\PowerPro\powerpro.exe runfile.TabTools | Далее продолжаются вопросы, которые уже начал задавать Flasher. Что значит "проверка"? Найти среди всех вкладок те, что указывают на конкретный диск? Для этого есть настройка Configuration \ Folder Tabs \ Always show drive letter in drive title.
Скрипт пишет полный путь каждой вкладки в тултипе к оной - наводи мышь и проверяй. Что касается закрытия, то закрывает он массово указанные пользователем вкладки , либо те, что указывают на несуществующий путь (скажем, на вынутый сидюк).
Если ты владеешь каким-либо скриптовым языком (раз уж ты используешь термин "послать сообщение"), нетрудно нацарапать скрипт, который читает информацию из разделов [lefttabs], [righttabs], [left], [right] и анализирует ее. Так можно, по крайней мере, вычислить все пути вкладок.
С закрытием сложнее, я в свое время с этим намучился. Вообще пути два - переключаться на закрываемые вкладки внутренними командами, либо сохранить набор в tab-файл, отредактировать и открыть из ТС. Я использовал оба эти пути (см. код).
В любом случае требуется уточнить, зачем такая экзотическая цель ставится. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Dec 19, 2010 17:23 Post subject: |
|
|
Да мне вообще кажется, что достаточно через контекстное меню вкладок сохранять нужное по разу в tab-файлы и создать с командой OPENTABS несколько кнопок/команд. И не надо никаких заморочек с текущими вкладками, ведь если ты определённо знаешь, какие вкладки не нужны, то, естественно знаешь, какие в определённый момент оставить. Всё просто.
А если нужно оставлять табы с определённым фильтром, например, с указанием диска, то как вариант - опять же вручную сохранить в tab-файл, а потом уже скриптом отредактировать и запустить. Если бы была команда сохранения табов в ini аналогично команде сохранения истории (cm_ConfigSaveDirHistory), то можно было бы автомат сделать. |
|
Back to top |
|
 |
tsviolen
Joined: 19 Dec 2010 Posts: 7
|
(Separately) Posted: Sun Dec 19, 2010 20:41 Post subject: |
|
|
Спасибо за отклики.
По порядку.
1. Всё это нужно для простой банальной цели - автоматизировать открытие и закрытие вкладок для вставляемых и извлекаемых устройств хранения информации. А именно: а) при вставке флэшки открывается новая вкладка в правой (к примеру) панели с указанием на только что вставленное устройство (эта задача вопросов не вызывает) б) при извлечении какая-нибудь программа или скрипт или команда командной строки проверяет пути вкладок на несуществующие пути (или на пути, указывающие на извлекаемое устройство) и закрывает соответствующие вкладки.
Я пользуюсь Zentimo, которая позволяет перед или после извлечения устройства запустить какой-либо скрипт или команду или файл.
2. Что касается скрипта TabTools - это был бы идеальный вариант. К сожалению, не удалось заставить его работать.
Оговорюсь, что никаким скриптовым языком не владею, только лишь начал знакомиться с PowerPro.
Теперь - к TabTools.
Вроде бы делал всё по инструкциям. Указал правильные пути в скрипте и вспомогательных скриптах. В итоге скрипт выдаёт такую ошибку:
Собственно, неудача в работе данного скрипта и послужила причиной обращения к форуму. |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Sun Dec 19, 2010 21:40 Post subject: |
|
|
Quote: | Вызываемые плагины: win, ini, tc, childwin, miscplugin, file, vec | Проверь, все ли плагины на месте (\plugins\). Если нет, то плагин tc берем отсюда, childwin - отсюда, а вот здесь берем огромный архив всякой всячины, в том числе и плагина ini, на котором скрипт и споткнулся.
Устанавливаем, пробуем еще раз, внимательно читаем описание, задаем мне вопросы.
Желаю успеха. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
tsviolen
Joined: 19 Dec 2010 Posts: 7
|
(Separately) Posted: Mon Dec 20, 2010 20:38 Post subject: |
|
|
Спасибо за ссылки.
Итак, все вызываемые плагины на месте. Тем не менее, проблема остаётся.
Как я понял, ошибка заключается в том, что при работе в скрипте плагин ini обращается к несуществующему ini-файлу или несуществующему ключу (параметру) в ini-файле.
Ini-файл существует, это wincmd.ini, путь к нему в скрипте указан верно.
А вот строки "activetab" в файле wincmd.ini действительно не существует:
Вот так выглядят секции left, right, lefttabs, righttabs в файле wincmd.ini:
Quote: | [left]
path=D:\
sortorder=1
RedirectSection=History.ini
[right]
path=C:\
sortorder=1
RedirectSection=History.ini
. . . . .
[lefttabs]
RedirectSection=History.ini
[righttabs]
RedirectSection=History.ini
|
А вот так эти же секции выглядят в файле History.ini:
Quote: | [left]
path=F:\Total Commander\
ShowAllDetails=1
SpecialView=3
show=1
negative Sortorder=0
customsortorder=1
[right]
path=F:\DOCS\SDF\CONST\
ShowAllDetails=1
SpecialView=3
show=1
negative Sortorder=0
customsortorder=1
. . . .
[lefttabs]
0_path=::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{7007ACC7-3202-11D1-AAD2-00805FC1270E}
0_caption=Сетевые подключения
0_options=6|1|0|0|0|1|0
1_path=F:\Total Commander\Plugins\
1_options=6|1|0|0|0|0|0
activetab=1
[righttabs]
0_path=F:\ДОКУМЕНТЫ\
0_options=6|1|0|0|0|0|0
1_path=F:\ДОКУМЕНТЫ\ОТЧЁТ\СЛМ\
1_options=6|1|0|0|0|0|0
2_path=f:\ДОКУМЕНТЫ\ТАБЛИЦЫ\КОНСТ\
2_options=6|1|0|0|0|0|0
3_path=f:\DOCS\FACS\BUHS\
3_options=6|1|0|0|0|0|0
activetab=2
|
Вопрос № 1: может быть скрипт должен читать информацию о вкладках в History.ini, а не в Wincmd.ini?
Вопрос № 2: если нет, то в чём причина ошибки?
Вопрос № 3: если да, то не возьмётся ли автор внести в скрипт соответствующие изменения? (сам не хочу, это не мой уровень, боюсь напартачить).[/code]
Last edited by tsviolen on Tue Dec 21, 2010 19:54; edited 1 time in total |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Dec 20, 2010 20:48 Post subject: |
|
|
tsviolen wrote: | может быть скрипт должен читать информацию о вкладках в History.ini, а не в Wincmd.ini? | Должен только в случае переноса секции в отдельный файл, а по умолчанию это wincmd.ini. Путь исправляется в переменной global Config, подозреваю, уровень там и не требуется.
Только я не понял, как скрипт будет работать без перезапуска TC, ведь в этих секциях текущие пути вкладок появляются только таким образом.. |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Mon Dec 20, 2010 21:47 Post subject: |
|
|
2tsviolen Quote: | А вот строки "activetab" в файле wincmd.ini действительно не существует | Она есть, она не может не есть. Подробности здесь, но и без них могу сказать - ключ activetab указывает номер активной вкладки каждой панели (не уточняя, правда, какая из них - текущая). Он должен жить в каждом из разделов [lefttabs] и [righttabs]. Если его там нет, выхода два - вписать его руками и перезапустить ТС или просто перезапустить ТС и проверить - должен быть в обоих! (Flasher прав).Я не знаю, что это, и он ни при чем. Quote: | Вопрос № 1: может быть скрипт должен читать информацию о вкладках в History.ini, а не в Wincmd.ini? | Нет. Quote: | Вопрос № 2: если нет, то в чём причина ошибки? | Сделай то, о чем сказано выше, и будем разбираться дальше. Quote: | Вопрос № 3: если да, то не возьмётся ли автор внести в скрипт соответствующие изменения? (сам не хочу, это не мой уровень, боюсь напартачить). | Только если выяснится, что это необходимо.
Не отчаивайся, скрипт и правда сложный, не ты первый на нем спотыкаешься. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
tsviolen
Joined: 19 Dec 2010 Posts: 7
|
(Separately) Posted: Sat Dec 25, 2010 15:58 Post subject: |
|
|
2Вахмурка
Вооружившись данными указаниями, ещё раз проверил содержимое секций [left], [right], [lefttabs], [righttabs] файла wincmd.ini. Как ни старался перезапускать ТС, но эти разделы никак не характеризовали состояние вкладок, и не содержали необходимых ключей (N_path, N_options, activetab и пр.) Все эти секции выглядели так, как мною описано в предыдущих постах, и просто отсылали, содержа каждая такую строку:
Quote: | RedirectSection=History.ini |
При этом:
команда cm_ConfigSaveSettings приводила к обновлению секций [left], [right], [lefttabs], [righttabs] именно в файле History.ini.
к этому же результату приводил перезапуск ТС.
Секции [left], [right], [lefttabs], [righttabs] файла History.ini выглядят "как положено" - характеризуют состояние вкладок, содержат их пути и опции.
Эксперимент с заменой пути в переменной global Config с файла Wincmd.ini на файл History.ini привёл к такому результату:
Скрпит TabTools заработал!
Криво, косо, но заработал! Все функции не проверял, но текущие пути вкладок показывает верно, значки заблокированных вкладок показывает верно, ищет несуществующие пути и показывает правильный результат. Вкладки "по-тихому" не закрывает - либо всё равно выдаёт запрос на закрытие, либо просто не закрывает, либо создаёт дубликат вкладки, подлежащей закрытию. Подозреваю, это связано с тем, что обращения к файлу Wincmd.ini в скрипте имеются не только к секциям [left], [right], [lefttabs], [righttabs].
Вот так. Может быть у меня ТС особенный? (версия 7.56, но в предыдущих 7.55а 7.56а было то же самое). Более ранние версии использовать не пробовал.
Quote: | History.ini
Я не знаю, что это... |
Файл, содержащийся в папке ТС. Впрочем, не верю, что Вы не знаете. |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Sat Dec 25, 2010 16:07 Post subject: |
|
|
tsviolen wrote: | Файл, содержащийся в папке ТС. Впрочем, не верю, что Вы не знаете. |
А я вот до получения ясных объяснений в последнем посте, что это специальный файл для редиректа определённых секций, не знал, и прошу в это поверить. Думаю, это касается и других посетителей форума.
В стандартном дистрибутиве TC такого файла нет. Если он для чего-то был добавлен, это неплохо было бы пояснить сразу. Хотя бы потому, что файл с перенесёнными секциями может располагаться где угодно и называться как угодно. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 25, 2010 16:13 Post subject: |
|
|
tsviolen wrote: | Может быть у меня ТС особенный? | Ну раз такие мысли появляются, то у меня одно объяснение этому - сборка. Т.е. сборщик сам задал перенос секции в отдельный файл(о чём я писал выше) ключём RedirectSection. Нужно найти его в wincmd.ini в каждой из перечисленных секций и установить значение каждого в 0, потом вернуть в скрипте для global Config первое значение. |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Sat Dec 25, 2010 16:23 Post subject: |
|
|
Flasher
Да, я оценил бы ситуацию и оптимальный способ выхода из неё ровно так же. С единственной поправкой: строки с ключиком RedirectSection можно вместо правки в указанных секциях вообще поудалять. (Интересно, если ли он в других секциях.) _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 25, 2010 16:32 Post subject: |
|
|
Avada
Хотел сразу написать, но подумал о тех секциях, которые по умолчанию переносятся при AlternateUserIni. Сейчас вижу, что среди перечисленных таких нет, поэтому твоё замечание справедливо. |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Sat Dec 25, 2010 16:43 Post subject: |
|
|
Flasher
Да, но мы же только куски из INI-файлов видим... Мне следовало бы, пожалуй, поставить попрос иначе: что ещё переносится в этот самый файл History.ini (как по умолчанию, так и путём явного указания в секциях)? Просто уже интересно стало. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|