как управлять закрытием вкладок
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
как управлять закрытием вкладок
Здравствуйте. Скажите, как при помощи командной строки (или из сторонней программы, послав сообщение в Тотал) выполнить следующее:
- проверить все пути вкладок на предмет их указания на конкретный путь (на конкретный диск);
- закрыть определённые вкладки, например, под определёнными номерами, независимо от того, являются ли они активными, и независимо от того, в какой они панели.
Версия Тотала: 7.56а
- проверить все пути вкладок на предмет их указания на конкретный путь (на конкретный диск);
- закрыть определённые вкладки, например, под определёнными номерами, независимо от того, являются ли они активными, и независимо от того, в какой они панели.
Версия Тотала: 7.56а
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Имеется такой скриптик, который может быть запущен и из командной строки:Далее продолжаются вопросы, которые уже начал задавать Flasher. Что значит "проверка"? Найти среди всех вкладок те, что указывают на конкретный диск? Для этого есть настройка Configuration \ Folder Tabs \ Always show drive letter in drive title.
Скрипт пишет полный путь каждой вкладки в тултипе к оной - наводи мышь и проверяй. Что касается закрытия, то закрывает он массово указанные пользователем вкладки , либо те, что указывают на несуществующий путь (скажем, на вынутый сидюк).
Если ты владеешь каким-либо скриптовым языком (раз уж ты используешь термин "послать сообщение"), нетрудно нацарапать скрипт, который читает информацию из разделов [lefttabs], [righttabs], [left], [right] и анализирует ее. Так можно, по крайней мере, вычислить все пути вкладок.
С закрытием сложнее, я в свое время с этим намучился. Вообще пути два - переключаться на закрываемые вкладки внутренними командами, либо сохранить набор в tab-файл, отредактировать и открыть из ТС. Я использовал оба эти пути (см. код).
В любом случае требуется уточнить, зачем такая экзотическая цель ставится.
Код: Выделить всё
c:\path\to\PowerPro\powerpro.exe runfile.TabToolsСкрипт пишет полный путь каждой вкладки в тултипе к оной - наводи мышь и проверяй. Что касается закрытия, то закрывает он массово указанные пользователем вкладки , либо те, что указывают на несуществующий путь (скажем, на вынутый сидюк).
Если ты владеешь каким-либо скриптовым языком (раз уж ты используешь термин "послать сообщение"), нетрудно нацарапать скрипт, который читает информацию из разделов [lefttabs], [righttabs], [left], [right] и анализирует ее. Так можно, по крайней мере, вычислить все пути вкладок.
С закрытием сложнее, я в свое время с этим намучился. Вообще пути два - переключаться на закрываемые вкладки внутренними командами, либо сохранить набор в tab-файл, отредактировать и открыть из ТС. Я использовал оба эти пути (см. код).
В любом случае требуется уточнить, зачем такая экзотическая цель ставится.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Да мне вообще кажется, что достаточно через контекстное меню вкладок сохранять нужное по разу в tab-файлы и создать с командой OPENTABS несколько кнопок/команд. И не надо никаких заморочек с текущими вкладками, ведь если ты определённо знаешь, какие вкладки не нужны, то, естественно знаешь, какие в определённый момент оставить. Всё просто.
А если нужно оставлять табы с определённым фильтром, например, с указанием диска, то как вариант - опять же вручную сохранить в tab-файл, а потом уже скриптом отредактировать и запустить. Если бы была команда сохранения табов в ini аналогично команде сохранения истории (cm_ConfigSaveDirHistory), то можно было бы автомат сделать.
А если нужно оставлять табы с определённым фильтром, например, с указанием диска, то как вариант - опять же вручную сохранить в tab-файл, а потом уже скриптом отредактировать и запустить. Если бы была команда сохранения табов в ini аналогично команде сохранения истории (cm_ConfigSaveDirHistory), то можно было бы автомат сделать.
Спасибо за отклики.
По порядку.
1. Всё это нужно для простой банальной цели - автоматизировать открытие и закрытие вкладок для вставляемых и извлекаемых устройств хранения информации. А именно: а) при вставке флэшки открывается новая вкладка в правой (к примеру) панели с указанием на только что вставленное устройство (эта задача вопросов не вызывает) б) при извлечении какая-нибудь программа или скрипт или команда командной строки проверяет пути вкладок на несуществующие пути (или на пути, указывающие на извлекаемое устройство) и закрывает соответствующие вкладки.
Я пользуюсь Zentimo, которая позволяет перед или после извлечения устройства запустить какой-либо скрипт или команду или файл.
2. Что касается скрипта TabTools - это был бы идеальный вариант. К сожалению, не удалось заставить его работать.
Оговорюсь, что никаким скриптовым языком не владею, только лишь начал знакомиться с PowerPro.
Теперь - к TabTools.
Вроде бы делал всё по инструкциям. Указал правильные пути в скрипте и вспомогательных скриптах. В итоге скрипт выдаёт такую ошибку:

Собственно, неудача в работе данного скрипта и послужила причиной обращения к форуму.
По порядку.
1. Всё это нужно для простой банальной цели - автоматизировать открытие и закрытие вкладок для вставляемых и извлекаемых устройств хранения информации. А именно: а) при вставке флэшки открывается новая вкладка в правой (к примеру) панели с указанием на только что вставленное устройство (эта задача вопросов не вызывает) б) при извлечении какая-нибудь программа или скрипт или команда командной строки проверяет пути вкладок на несуществующие пути (или на пути, указывающие на извлекаемое устройство) и закрывает соответствующие вкладки.
Я пользуюсь Zentimo, которая позволяет перед или после извлечения устройства запустить какой-либо скрипт или команду или файл.
2. Что касается скрипта TabTools - это был бы идеальный вариант. К сожалению, не удалось заставить его работать.
Оговорюсь, что никаким скриптовым языком не владею, только лишь начал знакомиться с PowerPro.
Теперь - к TabTools.
Вроде бы делал всё по инструкциям. Указал правильные пути в скрипте и вспомогательных скриптах. В итоге скрипт выдаёт такую ошибку:

Собственно, неудача в работе данного скрипта и послужила причиной обращения к форуму.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Проверь, все ли плагины на месте (\plugins\). Если нет, то плагин tc берем отсюда, childwin - отсюда, а вот здесь берем огромный архив всякой всячины, в том числе и плагина ini, на котором скрипт и споткнулся.Вызываемые плагины: win, ini, tc, childwin, miscplugin, file, vec
Устанавливаем, пробуем еще раз, внимательно читаем описание, задаем мне вопросы.
Желаю успеха.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Спасибо за ссылки.
Итак, все вызываемые плагины на месте. Тем не менее, проблема остаётся.
Как я понял, ошибка заключается в том, что при работе в скрипте плагин ini обращается к несуществующему ini-файлу или несуществующему ключу (параметру) в ini-файле.
Ini-файл существует, это wincmd.ini, путь к нему в скрипте указан верно.
А вот строки "activetab" в файле wincmd.ini действительно не существует:

Вот так выглядят секции left, right, lefttabs, righttabs в файле wincmd.ini:
Вопрос № 2: если нет, то в чём причина ошибки?
Вопрос № 3: если да, то не возьмётся ли автор внести в скрипт соответствующие изменения? (сам не хочу, это не мой уровень, боюсь напартачить).[/code]
Итак, все вызываемые плагины на месте. Тем не менее, проблема остаётся.
Как я понял, ошибка заключается в том, что при работе в скрипте плагин ini обращается к несуществующему ini-файлу или несуществующему ключу (параметру) в ini-файле.
Ini-файл существует, это wincmd.ini, путь к нему в скрипте указан верно.
А вот строки "activetab" в файле wincmd.ini действительно не существует:

Вот так выглядят секции left, right, lefttabs, righttabs в файле wincmd.ini:
А вот так эти же секции выглядят в файле History.ini:[left]
path=D:\
sortorder=1
RedirectSection=History.ini
[right]
path=C:\
sortorder=1
RedirectSection=History.ini
. . . . .
[lefttabs]
RedirectSection=History.ini
[righttabs]
RedirectSection=History.ini
Вопрос № 1: может быть скрипт должен читать информацию о вкладках в History.ini, а не в Wincmd.ini?[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
Вопрос № 2: если нет, то в чём причина ошибки?
Вопрос № 3: если да, то не возьмётся ли автор внести в скрипт соответствующие изменения? (сам не хочу, это не мой уровень, боюсь напартачить).[/code]
Последний раз редактировалось tsviolen Вт дек 21, 2010 18:54, всего редактировалось 1 раз.
Должен только в случае переноса секции в отдельный файл, а по умолчанию это wincmd.ini. Путь исправляется в переменной global Config, подозреваю, уровень там и не требуется.tsviolen писал(а):может быть скрипт должен читать информацию о вкладках в History.ini, а не в Wincmd.ini?
Только я не понял, как скрипт будет работать без перезапуска TC, ведь в этих секциях текущие пути вкладок появляются только таким образом..
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
2tsviolen
Не отчаивайся, скрипт и правда сложный, не ты первый на нем спотыкаешься.
Она есть, она не может не есть. Подробности здесь, но и без них могу сказать - ключ activetab указывает номер активной вкладки каждой панели (не уточняя, правда, какая из них - текущая). Он должен жить в каждом из разделов [lefttabs] и [righttabs]. Если его там нет, выхода два - вписать его руками и перезапустить ТС или просто перезапустить ТС и проверить - должен быть в обоих! (Flasher прав).А вот строки "activetab" в файле wincmd.ini действительно не существует
Я не знаю, что это, и он ни при чем.History.ini
Нет.Вопрос № 1: может быть скрипт должен читать информацию о вкладках в History.ini, а не в Wincmd.ini?
Сделай то, о чем сказано выше, и будем разбираться дальше.Вопрос № 2: если нет, то в чём причина ошибки?
Только если выяснится, что это необходимо.Вопрос № 3: если да, то не возьмётся ли автор внести в скрипт соответствующие изменения? (сам не хочу, это не мой уровень, боюсь напартачить).
Не отчаивайся, скрипт и правда сложный, не ты первый на нем спотыкаешься.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
2Вахмурка
Вооружившись данными указаниями, ещё раз проверил содержимое секций [left], [right], [lefttabs], [righttabs] файла wincmd.ini. Как ни старался перезапускать ТС, но эти разделы никак не характеризовали состояние вкладок, и не содержали необходимых ключей (N_path, N_options, activetab и пр.) Все эти секции выглядели так, как мною описано в предыдущих постах, и просто отсылали, содержа каждая такую строку:
команда 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а было то же самое). Более ранние версии использовать не пробовал.
Вооружившись данными указаниями, ещё раз проверил содержимое секций [left], [right], [lefttabs], [righttabs] файла wincmd.ini. Как ни старался перезапускать ТС, но эти разделы никак не характеризовали состояние вкладок, и не содержали необходимых ключей (N_path, N_options, activetab и пр.) Все эти секции выглядели так, как мною описано в предыдущих постах, и просто отсылали, содержа каждая такую строку:
При этом: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а было то же самое). Более ранние версии использовать не пробовал.
Файл, содержащийся в папке ТС. Впрочем, не верю, что Вы не знаете.History.ini
Я не знаю, что это...
А я вот до получения ясных объяснений в последнем посте, что это специальный файл для редиректа определённых секций, не знал, и прошу в это поверить. Думаю, это касается и других посетителей форума.tsviolen писал(а):Файл, содержащийся в папке ТС. Впрочем, не верю, что Вы не знаете.
В стандартном дистрибутиве TC такого файла нет. Если он для чего-то был добавлен, это неплохо было бы пояснить сразу. Хотя бы потому, что файл с перенесёнными секциями может располагаться где угодно и называться как угодно.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Ну раз такие мысли появляются, то у меня одно объяснение этому - сборка. Т.е. сборщик сам задал перенос секции в отдельный файл(о чём я писал выше) ключём RedirectSection. Нужно найти его в wincmd.ini в каждой из перечисленных секций и установить значение каждого в 0, потом вернуть в скрипте для global Config первое значение.tsviolen писал(а):Может быть у меня ТС особенный?
Flasher
Да, я оценил бы ситуацию и оптимальный способ выхода из неё ровно так же. С единственной поправкой: строки с ключиком RedirectSection можно вместо правки в указанных секциях вообще поудалять. (Интересно, если ли он в других секциях.)
Да, я оценил бы ситуацию и оптимальный способ выхода из неё ровно так же. С единственной поправкой: строки с ключиком RedirectSection можно вместо правки в указанных секциях вообще поудалять. (Интересно, если ли он в других секциях.)
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Flasher
Да, но мы же только куски из INI-файлов видим... Мне следовало бы, пожалуй, поставить попрос иначе: что ещё переносится в этот самый файл History.ini (как по умолчанию, так и путём явного указания в секциях)? Просто уже интересно стало.
Да, но мы же только куски из INI-файлов видим... Мне следовало бы, пожалуй, поставить попрос иначе: что ещё переносится в этот самый файл History.ini (как по умолчанию, так и путём явного указания в секциях)? Просто уже интересно стало.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.