View previous topic :: View next topic |
Author |
Message |
CaptainFlint
![](images/avatars/1538602816566b383536f19.png)
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Wed Jul 04, 2007 16:29 Post subject: |
|
|
vet wrote: | Для этого есть более простой способ. |
Этот пост был написал более года назад, когда ещё даже первая альфа семёрки Тотала не была выпущена.
И желательно включать BB-коды, если они используются в сообщении. В предыдущем посте я исправил, но на будущее стоит иметь в виду. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
aLexx
![](images/avatars/130384300146405e5b27d6c.gif)
Joined: 14 Mar 2005 Posts: 442 Location: Новокузнецк
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
LocKtaR-o-DarK
![](images/avatars/186875045345b9eac489f81.gif)
Joined: 12 Aug 2005 Posts: 349 Location: Москва
|
(Separately) Posted: Thu Jul 05, 2007 02:35 Post subject: |
|
|
vet
да, это замечательно, но все-таки пусть лучше тотал сравнивает своими внутренними средствами, все таки чем-то и кому-то это удобней, а для внешних средств всегда можно написать кнопку, а ля
параметр можно прописать %S2 (для winmerge это не принципиально) _________________
![](https://a.radikal.ru/a30/1912/9f/3360064f40fe.gif) |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
kertlerf
Joined: 20 Sep 2006 Posts: 8
|
(Separately) Posted: Mon Aug 06, 2007 05:48 Post subject: |
|
|
Можно ли две комманды прим.
Code: | OPENBAR %COMMANDER_PATH%\Prof\01.bar
OPENTABS %COMMANDER_PATH%\Prof\01.tab |
повесить на одну кнопку? |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
kertlerf
Joined: 20 Sep 2006 Posts: 8
|
(Separately) Posted: Sat Aug 11, 2007 14:56 Post subject: |
|
|
Вопрос снят, сам разобрался. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
jehaz
Joined: 24 May 2006 Posts: 16
|
(Separately) Posted: Fri Aug 17, 2007 21:16 Post subject: |
|
|
Вот скрипт который можно повесить на кнопку с параметром %L
Копирует выделенные файлы в ту же папку добавляя нумерацию копии в скобках идентично ТС.
Облазил форум, вроде такого не было.
Code: | '================================================================
' Параметры %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 |
Немного подправил.
Last edited by jehaz on Mon Aug 20, 2007 16:55; edited 3 times in total |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
jehaz
Joined: 24 May 2006 Posts: 16
|
(Separately) Posted: Fri Aug 17, 2007 21:20 Post subject: |
|
|
Скрипт вызывающий стандартное окно диалога завершения работы
Code: | '=========================================================
' Вывод диалога завершения работы.
'=========================================================
Option Explicit
Dim Shell
Set Shell = WScript.CreateObject("Shell.Application")
Shell.ShutDownWindows |
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
LocKtaR-o-DarK
![](images/avatars/186875045345b9eac489f81.gif)
Joined: 12 Aug 2005 Posts: 349 Location: Москва
|
(Separately) Posted: Sat Aug 18, 2007 18:21 Post subject: |
|
|
jehaz wrote: | Скрипт вызывающий стандартное окно диалога завершения работы |
а вот кнопка _________________
![](https://a.radikal.ru/a30/1912/9f/3360064f40fe.gif) |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Batya
![](images/avatars/14956831694439fb6161cdd.gif)
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Mon Aug 20, 2007 10:54 Post subject: |
|
|
jehaz wrote: | Вот скрипт который можно повесить на кнопку с параметром %L
Копирует выделенные файлы в ту же папку добавляя нумерацию копии в скобках идентично ТС.
Облазил форум, вроде такого не было. |
1. А зачем нужно копировать в ту же папку файл-дубликат? Тогда уж лучше задать второй параметр %P или %T по желанию пользователя.
2. Часто для нумерации файлов используются квадратные скобки. Поэтому в теле скрипта лучше не использовать жестко "(" и ")", а задать в шапке скрипта массив, например, Skoba = Array("(", ")") и в коде ссылаться на Skoba(0) и Skoba(1). При желании пользователь сможет поменять Skoba = Array("[", "]") или Skoba = Array("<", ">").
3. Не учтено, что %L может содержать кроме файлов еще и папки. А также, что новое рассчитанное имя файла может быть именем существующей папки.
4. Конструкция
Code: | CounterLen = Len(FileName)
Do While CounterLen <> 0 |
для посимвольного перебора не очень удачна. Тем более, начиная с Len(FileName), а не с Len(FileName) - 1. Лучше использовать InStrRev.
5. Если по Loop until not FSO.FileExists(FileFullName) скрипт возвращается в начало (Do ' Работаем пока не найдется имя не занятое файлами), то снова начинаем вычислять значение в скобках. Это не есть хорошо. Раз уж скрипт уже нашел значение номера исходного файла\папки, то надо повышать номер, пока не найдется отсутствующий, а не начить все с начала.
Кстати, нечто подобное, но по-проще (без вычисления номера исходного файла), я уже делал. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
kolotunbabaj
Joined: 28 Sep 2007 Posts: 13 Location: Русь, ибо славянин...
|
(Separately) Posted: Sun Sep 30, 2007 21:01 Post subject: |
|
|
А если кнопок уже в два ряда? В сборке от IMPOMEZIA видел решение, но не знаю как это сделать. Там в начале тулбара две зелёные стрелки вызывающие "Панель инструментов: Плагины и Программы" и "Панель инструментов: Системные программы". Подскажите кто знает как? _________________ СОБАКА тоже ЧЕЛОВЕК, только в шубе... |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
D1P
![](images/avatars/29729513952164f342480c.jpg)
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Sun Sep 30, 2007 21:05 Post subject: |
|
|
Кнопка ссылается на *.bar-файл с другой панелью. Например:
Code: |
TOTALCMD#BAR#DATA
D:\dshell\startmenu.bar
D:\dshell\TOTALCMD.EXE
D:\dshell\
-1
|
Соответственно, можно наделать кучу панелей, на каждую из которых накидать кнопок для переключения на другие. Вот и всё. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Georgе
Joined: 28 Aug 2007 Posts: 99
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Zorroz
![](images/avatars/622784349a543f91d0f1.jpg)
Joined: 16 Dec 2004 Posts: 308 Location: Россия, Иркутская обл., г. Ангарск
|
(Separately) Posted: Mon Oct 08, 2007 17:01 Post subject: |
|
|
есть кнопка:
Code: | TOTALCMD#BAR#DATA
ping
?
C:\totalcmd\TOTALCMD.EXE,2
-1
|
ввожу айпишник, все ок, только окно закрывается. Можно как то этого избежать, что бы оно не закрывалось? _________________ Когда ангелу обрезают крылья, он учится летать на метле... |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
D1P
![](images/avatars/29729513952164f342480c.jpg)
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Tovarishh
Joined: 16 Jun 2006 Posts: 15
|
(Separately) Posted: Sat Dec 29, 2007 03:07 Post subject: Обмен кнопками |
|
|
В версии ТС 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 добавляем
Quote: | [em_set_Russian]
Cmd=%COMMANDER_PATH%\Plugins\Utilities\hidec.exe "%COMMANDER_PATH%\rus.bat"
Param= |
В WCMD_RUS.ini добавляем
Quote: | [em_set_English]
Cmd=%COMMANDER_PATH%\Plugins\Utilities\hidec.exe "%COMMANDER_PATH%\eng.bat"
Param=
|
3.
Открываем WCMD_ENG.MNU и прописываем, где хотим, что бы отображался "переключатель"
Quote: | POPUP "Язык"
MENUITEM "Русский", em_set_Russian
END_POPUP |
Затем в WCMD_RUS.MNU
Quote: | POPUP "Change Language"
MENUITEM "Switch to English", em_set_English
END_POPUP |
4.
Создаём два файла в %COMMANDER_PATH%\ eng.bat и rus.bat
в eng.bat
Quote: | 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
Quote: | 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
Quote: | TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\Utilities\hidec.exe "%COMMANDER_PATH%\eng.bat"
TOTALCMD.EXE,23
English
-1
|
En_Ru
Quote: | TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Plugins\Utilities\hidec.exe "%COMMANDER_PATH%\rus.bat"
TOTALCMD.EXE ,23
Русский
-1
|
PS: Панель не резиновая... для всех места нет! |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
|
|
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
|