| 
 
	
		| View previous topic :: View next topic |  
		| Author | Message |  
		| ice_daemon 
 
 
 Joined: 07 Jun 2013
 Posts: 23
 
 
 | 
			
				|  (Separately) Posted: Sun Nov 08, 2015 03:24    Post subject: Удаление одинаковых кнопок со всех панелей инструментов ТС |   |  
				| 
 |  
				| Есть 4 панели ТС и скрипт, который добавляет выбранную кнопку в конец каждой из 4х панелей (в начало новой строки, после "-2") 
 пример скрипта для одной панели
 
  	  | Code: |  	  | 
@ECHO off
 SETLOCAL enabledelayedexpansion
 
 for /f "tokens=1,2 delims== usebackq" %%i in ("%~dp0..\Bars\_TEMP.bar") do IF /i "%%i"=="Buttoncount" set tcPlusCOUNT=%%j
 
 if DEFINED tcPlusCOUNT goto m2
 goto m100
 :m2
 for /f "tokens=1,2 delims=> usebackq" %%i in ("%~dp0..\Bars\%2.bar") do (
 if /i "%%j"=="%1" (
 set tcPlusPARAM=%%i& set tcPlusPARAM=!tcPlusPARAM:~5,2!
 if "!tcPlusPARAM:~-1!"=="=" set tcPlusPARAM=!tcPlusPARAM:~0,1!
 )
 )
 
 if defined tcPlusPARAM goto m3
 goto m100
 :m3
 set /a tcPlusCOUNT=%tcPlusCOUNT%+1
 
 If !tcPlusPARAM! LSS 10 (Set tcPlusPOZ=1) Else Set tcPlusPOZ=2
 
 echo. 2>"%~dp0TEMPTOCOPY.TXT"
 ( echo.
 for /f "tokens=1,2 delims== usebackq" %%i in ("%~dp0..\Bars\%2.bar") do (
 set tcPlusTEST=%%i
 if /i "!tcPlusTEST:~-%tcPlusPOZ%!"=="!tcPlusPARAM!" (
 rem echo.
 echo !tcPlusTEST:~0,-%tcPlusPOZ%!%tcPlusCOUNT%=%%j
 set tcPlusFIND=1
 )
 ))>>"%~dp0TEMPTOCOPY.TXT"
 
 if DEFINED tcPlusFIND goto m1
 del /f /q "%~dp0TEMPTOCOPY.TXT"
 goto m100
 :m1
 
 
 type "%~dp0TEMPTOCOPY.TXT">>"%~dp0..\Bars\_TEMP.bar"
 del /f /q "%~dp0TEMPTOCOPY.TXT"
 
 call "%~dp0nircmdc.exe" inisetval "%~dp0..\Bars\_TEMP.bar" "Buttonbar" "Buttoncount" "%tcPlusCOUNT%"
 
 :m100
 rem удаление переменных
 For %%i In (tcPlusCOUNT tcPlusTEST tcPlusFIND cPlusNIRCMDC tcPlusPARAM) Do Set %%i=
 
 | 
 
 Хотелось бы теперь, чтобы при удалении одной из этих добавленных кнопок, удалялись и 3 другие с каждой панели соответственно
 
 Помогите, пожалуйста, кто силен в скриптах
 |  |  
		| Back to top |  |  
		|  |  
		| Flasher 
 
  
 Joined: 06 Nov 2009
 Posts: 14229
 Location: Москва
 
 | 
			
				|  (Separately) Posted: Sun Nov 08, 2015 05:07    Post subject: |   |  
				| 
 |  
				| ice_daemon Откуда батник?
 _________________
 Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
 |  |  
		| Back to top |  |  
		|  |  
		| Avada 
 
  
 Joined: 01 Aug 2008
 Posts: 10443
 Location: Россия, Саратов
 
 | 
			
				|  (Separately) Posted: Sun Nov 08, 2015 11:09    Post subject: |   |  
				| 
 |  
				| ice_daemon Меня тоже интересует источник. И как верно было замечено, это не скрипт, а батник. Так что заголовок темы меняю.
 _________________
 Даже самая богатая фантазия
 Не представит себе наши безобразия.
 |  |  
		| Back to top |  |  
		|  |  
		| MVV 
 
  
 Joined: 15 Oct 2009
 Posts: 4815
 Location: Ростов-Дон
 
 |  |  
		| Back to top |  |  
		|  |  
		| Flasher 
 
  
 Joined: 06 Nov 2009
 Posts: 14229
 Location: Москва
 
 | 
			
				|  (Separately) Posted: Sun Nov 08, 2015 17:48    Post subject: |   |  
				| 
 |  
				| MVV Выпадение меню как-то решает проблему наличия в них ненужных одинаковых кнопок?
 И потом, панели с общим набором всяко легче использовать именно в стандартном виде, особенно когда совпадает один из рядов.
 _________________
 Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
 |  |  
		| Back to top |  |  
		|  |  
		| ice_daemon 
 
 
 Joined: 07 Jun 2013
 Posts: 23
 
 
 | 
			
				|  (Separately) Posted: Sun Nov 08, 2015 18:18    Post subject: |   |  
				| 
 |  
				| Батник уже не помню откуда, пару лет назад кто-то помог написать (или отсюда или с CyberForum'a) Батник использовался для добавления кнопок в отдельную панель "избранное", но  на нее все равно приходится переключаться.
 
 Сейчас пытаюсь сделать, чтобы "избранное" второй строкой на всех панелях присутствовало. По панелям щелкаешь, а вторая строка неизменна, удобно, но приходится потом руками удалять с каждой панели кнопку, хотелось бы как-то автоматизировать процесс
 
 Last edited by ice_daemon on Sun Nov 08, 2015 23:45; edited 1 time in total
 |  |  
		| Back to top |  |  
		|  |  
		| Avada 
 
  
 Joined: 01 Aug 2008
 Posts: 10443
 Location: Россия, Саратов
 
 | 
			
				|  (Separately) Posted: Sun Nov 08, 2015 23:31    Post subject: |   |  
				| 
 |  
				| ice_daemon Заглавные буквы и знаки препинания (включая точки) в русском языке никто не отменял. Это относится и к нашему форуму, который не надо путать с чатом. Пишите нормально, вас трудно читать и понимать.
 _________________
 Даже самая богатая фантазия
 Не представит себе наши безобразия.
 |  |  
		| Back to top |  |  
		|  |  
		| Flasher 
 
  
 Joined: 06 Nov 2009
 Posts: 14229
 Location: Москва
 
 | 
			
				|  (Separately) Posted: Tue Nov 10, 2015 09:09    Post subject: |   |  
				| 
 |  
				| ice_daemon, пару точек таки пропустил.   
 Помозговал я тут, вот что получилось (тестировать сперва на копиях):
 
  	  | Code: |  	  | '============================= VBS ==============================
' Удалить с панелей инструментов кнопку по коду из буфера обмена
 
 ' Параметры: "<путь к каталогу c BAR-файлами>" <имена BAR-файлов>
 ' Пример:    "%%COMMANDER_PATH%%\ButtonBars" Default.bar User.bar
 
 ' Автор - Flasher ©
 '================================================================
 
 Option Explicit
 Dim Arg, Cnt, WSH, C, K, Clip, Keys, FSO, Path, Src, FPath, Chek
 
 Set Arg = WScript.Arguments : Cnt = Arg.Count
 If Cnt < 2 Then Msg "Укажите не менее 2-х параметров!", 4144
 C = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
 Set WSH = CreateObject("WScript.Shell")
 With WSH
 On Error Resume Next
 K = .RegRead(C) : If K > 0 Or Err.Number <> 0 Then .RegWrite C, 0, "REG_DWORD"
 Clip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
 If K > 0 Then .RegWrite C, K, "REG_DWORD"
 On Error Goto 0
 End With
 If Trim(Clip) = "" Then _
 Msg "Буфер обмена не содержит текстовых данных!", 4144
 C = Split(Clip, vbNewLine) : If C(0) <> "TOTALCMD#BAR#DATA" Then _
 Msg    "В буфере обмена отсутствует код кнопки!", 4144
 
 With New RegExp
 .Global = True : .Pattern = "([\$\(\)\*\+\.\[\?\^\{\|\\])"
 For K = 1 to 6
 C(K) = .Replace(C(K), "\$1")
 If Left(C(K), 1) = """" Then C(K) = """" & C(K) & """"
 Next : .Global = False
 End With : Keys = "(cmd|param|button|menu|path|iconic)"
 Set FSO = CreateObject("Scripting.FileSystemObject")
 Path = WSH.ExpandEnvironmentStrings(Arg(0))
 Src  = "^(Buttoncount=)[1-9][0-9]*$"
 For K = 1 To Cnt - 1
 FPath = FSO.BuildPath(Path, Arg(K))
 If FSO.FileExists(FPath) Then Repl FPath, Chek
 Next : If Chek Then _
 Msg "Кнопка удалена со всех заданных панелей инструментов!", 4160
 Msg  "Кнопка отсутствует на заданных панелях инстурментов!", 4144
 
 Sub Msg(Text, Num)
 MsgBox Text, Num, " Удаление кнопки c панелей инструментов ТС      "
 WScript.Quit
 End Sub
 
 Sub Repl(BarFile, Test)
 Dim All, Count, n, i
 All = FSO.OpenTextFile(BarFile).ReadAll
 With New RegExp
 .Multiline = True : .Pattern = Src
 Count = Split(.Execute(All)(0),"=")(1)
 For n = 1 To Count
 .Pattern = "^cmd" & n & "=" & C(1) & "$"
 If .Test(All) Or C(1) = "" Then
 .Pattern = "^param" & n & "=" & C(2) & "$"
 If .Test(All) Or C(2) = "" Then
 .Pattern = "^button" & n & "=" & C(3) & "$"
 If .Test(All) Or C(3) = "" Then
 .Pattern = "^menu" & n & "=" & C(4) & "$"
 If .Test(All) Or C(4) = "" Then
 .Pattern = "^path" & n & "=" & C(5) & "$"
 If .Test(All) Or C(5) = "" Then
 .Pattern = "^iconic" & n & "=" & C(6) & "$"
 If .Test(All) Or C(6) = "" Then
 .Pattern = Src : All = .Replace(All, "$1" & Count - 1)
 .Global = True : .Pattern = "(\r?\n|^)" & Keys & n & "=.*$"
 All = .Replace(All, "") : Test = 1
 For i = n + 1 To Count
 .Pattern = "^" & Keys & i & "(=.*)$"
 All = .Replace(All, "$1" & i - 1 & "$2")
 Next : Count = Count - 1 : .Global = False
 End If
 End If
 End If
 End If
 End If
 End If
 Next
 If Test Then
 With FSO.OpenTextFile(BarFile, 2) : .Write All : .Close : End With
 End If
 End With
 End Sub
 | 
 _________________
 Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
 |  |  
		| Back to top |  |  
		|  |  
		| ice_daemon 
 
 
 Joined: 07 Jun 2013
 Posts: 23
 
 
 |  |  
		| Back to top |  |  
		|  |  
		| Flasher 
 
  
 Joined: 06 Nov 2009
 Posts: 14229
 Location: Москва
 
 | 
			
				|  (Separately) Posted: Wed Nov 18, 2015 13:38    Post subject: |   |  
				| 
 |  
				| Если это намёк на упрощённый вариант исключительно для последних кнопок (потенциально только что добавленных), то: 
   RemoveLastButtonFromDefinedToolbars.vbs 	  | Code: |  	  | '============================= VBS ==============================
' Удалить с указанных панелей инструментов последнюю кнопку
 
 ' Параметры: "<путь к каталогу c BAR-файлами>" <имена BAR-файлов>
 ' Пример:    "%%COMMANDER_PATH%%\ButtonBars" Default.bar User.bar
 
 ' Автор - Flasher ©
 '================================================================
 
 Option Explicit : Dim Title, Arg, Cnt, Path, FSO, Par, FPath, Chek
 Title = " Удаление последней кнопки c панелей инструментов      "
 Set Arg = WScript.Arguments : Cnt = Arg.Count
 If Cnt < 2 Then MsgBox "Укажите не менее 2-х параметров!", 4144, Title
 Path = CreateObject("WScript.Shell").ExpandEnvironmentStrings(Arg(0))
 Set FSO = CreateObject("Scripting.FileSystemObject")
 For Par = 1 To Cnt - 1
 FPath = FSO.BuildPath(Path, Arg(Par))
 If FSO.FileExists(FPath) Then Repl FPath, Chek
 Next : If Chek Then _
 MsgBox "Кнопка удалена со всех заданных панелей инструментов!", 4160, Title
 
 Sub Repl(BarFile, Test)
 Dim All, Count : All = FSO.OpenTextFile(BarFile).ReadAll : Test = 1
 With New RegExp
 .Multiline = True : .Pattern = "^(Buttoncount=)[1-9][0-9]*$"
 Count = Split(.Execute(All)(0),"=")(1) : All = .Replace(All, "$1" & Count - 1)
 .Global = True : .Pattern = "\r?\n(cmd|param|button|menu|path|iconic)" &_
 Count & "=.*$" : All = .Replace(All, "")
 End With : With FSO.OpenTextFile(BarFile, 2) : .Write All : .Close : End With
 End Sub
 | 
_________________
 Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
 |  |  
		| Back to top |  |  
		|  |  
		| ice_daemon 
 
 
 Joined: 07 Jun 2013
 Posts: 23
 
 
 | 
			
				|  (Separately) Posted: Fri Nov 20, 2015 13:48    Post subject: |   |  
				| 
 |  
				| Flasher Большое спасибо, но не совсем
 
 Новая строка в панели начинается после "кнопки" с параметром -2.
 Хотелось бы, чтобы при нажатии на кнопку с модификатором (условно Shift+click, реализуется через ButtonBar eXtended), скрипт определял на каком месте относительно "-2" находится кнопка, удалял ее, и кнопки находящиеся на этом же месте в других панелях.
 |  |  
		| Back to top |  |  
		|  |  
		| Flasher 
 
  
 Joined: 06 Nov 2009
 Posts: 14229
 Location: Москва
 
 | 
			
				|  (Separately) Posted: Fri Nov 20, 2015 14:20    Post subject: |   |  
				| 
 |  
				| ice_daemon А зачем именно после -2? Если есть опасения по совпадению, то в первом скрипте на 57 строке 1 меняется на номер слудующей за -2 кнопки.
 Определить же на каком месте кнопка под курсором (пусть даже на AHK/AutoIt) весьма проблематично (если вообще возможно с учётом разноплановости межкнопочных расстояний при разных темах), я этим точно заниматься не буду.
 _________________
 Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
 |  |  
		| Back to top |  |  
		|  |  
		| ice_daemon 
 
 
 Joined: 07 Jun 2013
 Posts: 23
 
 
 | 
			
				|  (Separately) Posted: Sat Dec 05, 2015 18:58    Post subject: |   |  
				| 
 |  
				| а не подскажите как сделать, чтобы код кнопки при нажатии копировался в буфер? |  |  
		| Back to top |  |  
		|  |  
		| Avada 
 
  
 Joined: 01 Aug 2008
 Posts: 10443
 Location: Россия, Саратов
 
 | 
			
				|  (Separately) Posted: Sat Dec 05, 2015 19:15    Post subject: |   |  
				| 
 |  
				| ice_daemon Если в контекстном меню кнопки выбрать "Копировать", код копируется в буфер. Что ещё хочется нажимать и зачем?
 Про заглавные буквы предупреждение уже было.
 _________________
 Даже самая богатая фантазия
 Не представит себе наши безобразия.
 |  |  
		| Back to top |  |  
		|  |  
		| ice_daemon 
 
 
 Joined: 07 Jun 2013
 Posts: 23
 
 
 | 
			
				|  (Separately) Posted: Sat Dec 05, 2015 21:17    Post subject: |   |  
				| 
 |  
				| С контекстным меню понятно,  но может быть есть команда какая-нибудь которая передаёт код кнопки в буфер. Нужно для следующего, нажал кнопку с зажатым Shift'ом например, код кнопки записался в буфер и  далее с ним манипулировать |  |  
		| 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
 
 |