Обмен кнопками

Если вы хотите поделиться с другими пользователями секретами Total Commander, знаете интересные опции, приемы, настройки, то вам сюда.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

vet писал(а):Для этого есть более простой способ.
Этот пост был написал более года назад, когда ещё даже первая альфа семёрки Тотала не была выпущена.

И желательно включать BB-коды, если они используются в сообщении. В предыдущем посте я исправил, но на будущее стоит иметь в виду.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
aLexx
Сообщения: 442
Зарегистрирован: Пн мар 14, 2005 08:33
Откуда: Новокузнецк
Контактная информация:

Сообщение aLexx »

Atlair писал(а):Хочу кнопку извлечь/вставить CD :roll:
Глянь сюда ([UTIL] Утилита для работы с ТС):
http://forum.wincmd.ru/viewtopic.php?t=9566
Аватара пользователя
LocKtaR-o-DarK
Сообщения: 349
Зарегистрирован: Пт авг 12, 2005 04:20
Откуда: Москва
Контактная информация:

Сообщение LocKtaR-o-DarK »

vet
да, это замечательно, но все-таки пусть лучше тотал сравнивает своими внутренними средствами, все таки чем-то и кому-то это удобней, а для внешних средств всегда можно написать кнопку, а ля
параметр можно прописать %S2 (для winmerge это не принципиально)
Изображение    Изображение    Изображение
kertlerf
Сообщения: 8
Зарегистрирован: Ср сен 20, 2006 00:40

Сообщение kertlerf »

Можно ли две комманды прим.

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

OPENBAR %COMMANDER_PATH%\Prof\01.bar
OPENTABS %COMMANDER_PATH%\Prof\01.tab
повесить на одну кнопку?
kertlerf
Сообщения: 8
Зарегистрирован: Ср сен 20, 2006 00:40

Сообщение kertlerf »

Вопрос снят, сам разобрался.
jehaz
Сообщения: 16
Зарегистрирован: Ср май 24, 2006 15:18

Сообщение jehaz »

Вот скрипт который можно повесить на кнопку с параметром %L
Копирует выделенные файлы в ту же папку добавляя нумерацию копии в скобках идентично ТС.
Облазил форум, вроде такого не было.

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

'================================================================
' Параметры %L
' Создает копию выделенных файлов добавляя к имени порядковый
' номер в скобках (идентично TC). Если в имени уже присутствует
' порядковый номер в скобках, то увеличивает нумерацию до появления
' незанятого номера.
'================================================================
Option Explicit
Dim FSO, WSHArg, Argument, FileList, FileStr, FileFullName, Counter
Dim FileName, LenFileName, FileExt, FilePath, CounterLen, FileVName
Dim BetweenSkoba, OpenSkoba, BeforeSkoba, BetweenSkobaInt, TextStream
Set FSO = CreateObject("Scripting.FilesystemObject")
Set WSHArg = WScript.Arguments
If WSHArg.Count > 0 Then
  Argument = WSHArg.Item(0)
  Set FileList = FSO.GetFile(Argument)
  Set TextStream = FileList.OpenAsTextStream(1)
  FileStr = vbNullString
  While Not TextStream.AtEndOfStream
    FileStr = TextStream.ReadLine()
    Counter = 1
    FileName = FSO.GetBaseName(FileStr)
    CounterLen = Len(FileName)
    Do ' Работаем пока не найдется имя не занятое файлами
      If Mid(FileName,Len(FileName),1) = ")" Then ' Если в конце имени файла скобка, то возможно это уже ранее созданные копии файлов. Проверяем.
        Do While CounterLen <> 0
          If Mid(FileName,CounterLen,1) = "(" Then ' Если находится в имени закрытая скобка, то предположим что до скобок это имя, а в скобках нумерация копий
             OpenSkoba = CounterLen
             BetweenSkoba = Mid(FileName,OpenSkoba+1,Len(FileName)-CounterLen-1) ' Получаем значение находящиеся между скобками
             BeforeSkoba = Mid(FileName,1,OpenSkoba-1) ' Получаем предположительное имя до скобок
             CounterLen = 0
          Else
             CounterLen = CounterLen - 1
          End If
        Loop
        On Error Resume Next ' Отключаем ошибочку
        BetweenSkobaInt = FormatNumber(BetweenSkoba,0) ' Преобразуем междускобие в числовой формат
          If Err.Number = 0 Then ' Если ошибок нет, то в скобках было число
            If BetweenSkoba - BetweenSkobaInt = 0 Then ' Проверяем на всякий случай вдруг в скобках десятичная дробь
              FileName = BeforeSkoba ' Задаем имя как отобранное до скобок
              Counter = Counter + BetweenSkobaInt - 1
            End If
          End If
      End If
      CounterLen = 0
      Counter = Counter + 1
      FileExt = FSO.GetExtensionName(FileStr) ' получаем расширение
      FilePath = FSO.GetParentFolderName(FileStr) ' полный путь
      FileVName = FileName & "(" & Counter & ")" ' делаем новое имя
      If FileExt <> "" Then ' проверям на наличе расширения
          FileFullName = FilePath & "\" & FileVName & "." & FileExt ' Собираем имя в кучу
      Else
          FileFullName = FilePath & "\" & FileVName ' Без расширения куча
      End If
    Loop until not (FSO.FileExists(FileFullName) or FSO.FolderExists(FileFullName))
    If FSO.FileExists(FileStr) Then ' Еще раз проверяем наличие источника
    FSO.CopyFile FileStr, FileFullName ' Копируем
    End If
  Wend
End If
WScript.Quit
Немного подправил.
Последний раз редактировалось jehaz Пн авг 20, 2007 16:55, всего редактировалось 3 раза.
jehaz
Сообщения: 16
Зарегистрирован: Ср май 24, 2006 15:18

Сообщение jehaz »

Скрипт вызывающий стандартное окно диалога завершения работы

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

'=========================================================
' Вывод диалога завершения работы.
'=========================================================
Option Explicit
Dim Shell
Set Shell = WScript.CreateObject("Shell.Application")
Shell.ShutDownWindows
Аватара пользователя
LocKtaR-o-DarK
Сообщения: 349
Зарегистрирован: Пт авг 12, 2005 04:20
Откуда: Москва
Контактная информация:

Сообщение LocKtaR-o-DarK »

jehaz писал(а):Скрипт вызывающий стандартное окно диалога завершения работы
а вот кнопка
Изображение    Изображение    Изображение
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

jehaz писал(а):Вот скрипт который можно повесить на кнопку с параметром %L
Копирует выделенные файлы в ту же папку добавляя нумерацию копии в скобках идентично ТС.
Облазил форум, вроде такого не было.
1. А зачем нужно копировать в ту же папку файл-дубликат? Тогда уж лучше задать второй параметр %P или %T по желанию пользователя.
2. Часто для нумерации файлов используются квадратные скобки. Поэтому в теле скрипта лучше не использовать жестко "(" и ")", а задать в шапке скрипта массив, например, Skoba = Array("(", ")") и в коде ссылаться на Skoba(0) и Skoba(1). При желании пользователь сможет поменять Skoba = Array("[", "]") или Skoba = Array("<", ">").
3. Не учтено, что %L может содержать кроме файлов еще и папки. А также, что новое рассчитанное имя файла может быть именем существующей папки.
4. Конструкция

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

        CounterLen = Len(FileName) 
        Do While CounterLen <> 0 
для посимвольного перебора не очень удачна. Тем более, начиная с Len(FileName), а не с Len(FileName) - 1. Лучше использовать InStrRev.
5. Если по Loop until not FSO.FileExists(FileFullName) скрипт возвращается в начало (Do ' Работаем пока не найдется имя не занятое файлами), то снова начинаем вычислять значение в скобках. Это не есть хорошо. Раз уж скрипт уже нашел значение номера исходного файла\папки, то надо повышать номер, пока не найдется отсутствующий, а не начить все с начала.

Кстати, нечто подобное, но по-проще (без вычисления номера исходного файла), я уже делал.
kolotunbabaj
Сообщения: 13
Зарегистрирован: Пт сен 28, 2007 05:26
Откуда: Русь, ибо славянин...

Сообщение kolotunbabaj »

А если кнопок уже в два ряда? В сборке от IMPOMEZIA видел решение, но не знаю как это сделать. Там в начале тулбара две зелёные стрелки вызывающие "Панель инструментов: Плагины и Программы" и "Панель инструментов: Системные программы". Подскажите кто знает как?
СОБАКА тоже ЧЕЛОВЕК, только в шубе...
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Кнопка ссылается на *.bar-файл с другой панелью. Например:

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

TOTALCMD#BAR#DATA
D:\dshell\startmenu.bar

D:\dshell\TOTALCMD.EXE

D:\dshell\

-1
Соответственно, можно наделать кучу панелей, на каждую из которых накидать кнопок для переключения на другие. Вот и всё.
Georgе
Сообщения: 99
Зарегистрирован: Вт авг 28, 2007 06:00

Сообщение Georgе »

Аватара пользователя
Zorroz
Сообщения: 308
Зарегистрирован: Чт дек 16, 2004 10:40
Откуда: Россия, Иркутская обл., г. Ангарск

Сообщение Zorroz »

есть кнопка:

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

TOTALCMD#BAR#DATA
ping
?
C:\totalcmd\TOTALCMD.EXE,2



-1
ввожу айпишник, все ок, только окно закрывается. Можно как то этого избежать, что бы оно не закрывалось?
Когда ангелу обрезают крылья, он учится летать на метле...
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Ну, например, так:

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

TOTALCMD#BAR#DATA
cmd /k ping
?
D:\dshell\TOTALCMD.EXE



-1
Tovarishh
Сообщения: 15
Зарегистрирован: Пт июн 16, 2006 18:39

Обмен кнопками

Сообщение Tovarishh »

В версии ТС 7 появилась возможность использовать алиасы + появились новые INI.

Вот пример переключения Ru_En или En_ru языка + wincmd.ini в меню.

Допустим тотал имеет два wincmd.ini
а %COMMANDER_PATH%\eng.Wincmd.ini -Анг
б %COMMANDER_PATH%\rus.Wincmd.ini - Рус

В каждом настройки на свой язык, то есть
в eng.Wincmd.ini установлено WCMD_ENG.LNG + startmenu Barы на анг., а в rus.Wincmd.ini установлено WCMD_RUS.LNG + startmenu + Barы на рус.

1.
В каталоге %COMMANDER_PATH%\LANGUAGE создаём два файла WCMD_ENG.ini и WCMD_RUS.ini

2.
скачиваем Hidec.exe (он скрывает консоль) и кидаем например в %COMMANDER_PATH%\Plugins\Utilities\
В WCMD_ENG.ini добавляем
[em_set_Russian]
Cmd=%COMMANDER_PATH%\Plugins\Utilities\hidec.exe "%COMMANDER_PATH%\rus.bat"
Param=
В WCMD_RUS.ini добавляем
[em_set_English]
Cmd=%COMMANDER_PATH%\Plugins\Utilities\hidec.exe "%COMMANDER_PATH%\eng.bat"
Param=
3.
Открываем WCMD_ENG.MNU и прописываем, где хотим, что бы отображался "переключатель"
POPUP "Язык"
MENUITEM "Русский", em_set_Russian
END_POPUP
Затем в WCMD_RUS.MNU
POPUP "Change Language"
MENUITEM "Switch to English", em_set_English
END_POPUP
4.
Создаём два файла в %COMMANDER_PATH%\ eng.bat и rus.bat

в eng.bat
taskkill /IM TotalCMD.exe
ping -n 2 127.0.0.1 > nul
start /d "%COMMANDER_PATH%" TOTALCMD.exe "/I=%COMMANDER_PATH%\eng.wincmd.ini"
в rus.bat
taskkill /IM TotalCMD.exe
ping -n 2 127.0.0.1 > nul
start /d "%COMMANDER_PATH%" TOTALCMD.exe "/I=%COMMANDER_PATH%\rus.wincmd.ini"

Теперь после rr в TC можно переключать языки

Изображение

Изображение

Фактически ето переключение между двумя wincmd.ini

Можно поставить и кнопки на панель

Ru_En
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\Utilities\hidec.exe "%COMMANDER_PATH%\eng.bat"

TOTALCMD.EXE,23
English


-1
En_Ru
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\Utilities\hidec.exe "%COMMANDER_PATH%\rus.bat"

TOTALCMD.EXE ,23
Русский


-1


PS: Панель не резиновая... для всех места нет!
Ответить