Скрипт для посылания в буфер изменённого пути
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Скрипт для посылания в буфер изменённого пути
При тоталовской команде cm_CopyFullNamesToClip (Копировать в буфер имена с полными путями) результат к примеру такой:
c:\Total Commander\LANGUAGE\Wcmd_Rus.inc
c:\Windows\explorer.exe
c:\Program Files\Windows Calendar\WinCal.exe
а хотелось бы получить в буфере обмена после нажатия на кнопку
%COMMANDER_PATH%\LANGUAGE\Wcmd_Rus.inc
%WINDIR%\explorer.exe
%PROGRAMFILES%\Windows Calendar\WinCal.exe
1. хорошо бы, чтобы скрипт можно было дополнять и другими примерами
"Что менять в пути" и "На что менять"
2. хорошо бы, если был бы параметр: брать это всё в ковычки или нет
"%COMMANDER_PATH%\LANGUAGE\Wcmd_Rus.inc"
"%WINDIR%\explorer.exe"
"%PROGRAMFILES%\Windows Calendar\WinCal.exe"
3. хорошо бы, если был бы параметр: Добавка к пути ещё чего нибудь в начале или в конце к примеру резултат был бы
"%PROGRAMFILES%\Windows Calendar\WinCal.exe" "%1"
Спасибо заранее Андрей А А
c:\Total Commander\LANGUAGE\Wcmd_Rus.inc
c:\Windows\explorer.exe
c:\Program Files\Windows Calendar\WinCal.exe
а хотелось бы получить в буфере обмена после нажатия на кнопку
%COMMANDER_PATH%\LANGUAGE\Wcmd_Rus.inc
%WINDIR%\explorer.exe
%PROGRAMFILES%\Windows Calendar\WinCal.exe
1. хорошо бы, чтобы скрипт можно было дополнять и другими примерами
"Что менять в пути" и "На что менять"
2. хорошо бы, если был бы параметр: брать это всё в ковычки или нет
"%COMMANDER_PATH%\LANGUAGE\Wcmd_Rus.inc"
"%WINDIR%\explorer.exe"
"%PROGRAMFILES%\Windows Calendar\WinCal.exe"
3. хорошо бы, если был бы параметр: Добавка к пути ещё чего нибудь в начале или в конце к примеру резултат был бы
"%PROGRAMFILES%\Windows Calendar\WinCal.exe" "%1"
Спасибо заранее Андрей А А
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
http://powerpro.wincmd.ru/Scripts/ClipFileList.htm
http://powerpro.wincmd.ru/Scripts/ClipListDialog.htm
http://powerpro.wincmd.ru/Scripts/ClipListDialog.htm
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Спасибо за ссылку, очень интересный скрипт, к сожалению у меня с Power Pro никак не складывается...
Если это возможно, хотелось бы на vbs, или js? недавно попробовал скрипт от AutoHotkey...
Но самое главное, что хотелось - это чтобы в начале скрипта, или в отдельном файле была возможность прописать сколько угодно "замен", скрипт бы поочерёдно сканировал всё это и изменял нашедшее в выделенных путях, и выдавал всё это в буфер
1.%COMMANDER_PATH%|c:\Total Commander
2.%WINDIR%|c:\Windows
3.%PROGRAMFILES%|c:\Program Files
4. ...|...
5. ...|...
кстати, а может быть задействовать какой-то текстовый редактор?..
С уважением Андрей А А
Если это возможно, хотелось бы на vbs, или js? недавно попробовал скрипт от AutoHotkey...
Но самое главное, что хотелось - это чтобы в начале скрипта, или в отдельном файле была возможность прописать сколько угодно "замен", скрипт бы поочерёдно сканировал всё это и изменял нашедшее в выделенных путях, и выдавал всё это в буфер
1.%COMMANDER_PATH%|c:\Total Commander
2.%WINDIR%|c:\Windows
3.%PROGRAMFILES%|c:\Program Files
4. ...|...
5. ...|...
кстати, а может быть задействовать какой-то текстовый редактор?..
С уважением Андрей А А
Обрати внимание на AutoIt (скриптовый язык)- там можно и не такое делать (и с тоталом при желании можно подружить). Смотри темы по нему на ру-борде, озоне и т.д. Да и в изучении не такой тяжелый, в общем после небольшой тренировки можешь писать всё, что тебе нужно (а при необходимости задавать вопросы на вышеуказанных форумах, там с радостью помогут).
Идея показалась интересной, написал вот такой скрипт (Autoit):
Код: Выделить всё
Global $aSubst[1][2] = [[0,0]]
Global $sResult = "", $sTemp
; Может быть от 1 до 3-х параметров командной строки
; 1 - список получаемый через %L
; 2 - использовать кавычки или нет (1/0)
; 3 - дополнительная командная строка, если содержит пробелы, то должна быть
; заключена в двойные кавычки. Если в самой строке нужно использовать
; двойные кавычки, используйте две одинарные подряд, они будут заменены на двойные
If $CmdLine[0] = 0 Then Exit
; Тут задаем замены
; Если второй параметр не задан, первый трактуется
; как переменная окружения и путь замены берется из системы
_Add("COMMANDER_PATH")
_Add("WINDIR")
_Add("PROGRAMFILES")
; А если задан, то производится простая замена
_Add("НА ЧТО МЕНЯТЬ", "ЧТО МЕНЯТЬ")
$aList = _TCHLoadFileList($CmdLine[1])
; Проверим, нет ли в наших путях строки
For $i = 1 To $aList[0]
For $j = 1 To $aSubst[0][0]
If StringInStr($aList[$i], $aSubst[$j][0]) > 0 Then
$sTemp = StringReplace($aList[$i], $aSubst[$j][0], $aSubst[$j][1])
If $CmdLine[0] > 1 And $CmdLine[2] = 1 Then $sTemp = '"' & $sTemp & '"'
If $CmdLine[0] = 3 Then $sTemp &= ' ' & StringReplace($CmdLine[3], "''", '"')
$sResult &= $sTemp & @CRLF
ExitLoop
EndIf
Next
Next
; Уберем лишний перенос строки и скопируем в буфер
ClipPut(StringTrimRight($sResult, 2))
Func _Add($sSubst, $sReplace = Default)
$aSubst[0][0] += 1
ReDim $aSubst[$aSubst[0][0]+1][2]
If @NumParams = 1 Then
$aSubst[$aSubst[0][0]][0] = EnvGet($sSubst)
$aSubst[$aSubst[0][0]][1] = "%" & $sSubst & "%"
Else
$aSubst[$aSubst[0][0]][0] = $sReplace
$aSubst[$aSubst[0][0]][1] = $sSubst
EndIf
EndFunc
; Load to array list of files, received with %L or %l TC macro
Func _TCHLoadFileList($sFileName)
Local $asList[1] = [0]
Local $hfList = FileOpen($sFileName, 0)
While 1
$sLine = FileReadLine($hfList)
If @error Then Exitloop
ReDim $asList[UBound($asList)+1]
$asList[UBound($asList)-1] = $sLine
Wend
FileClose($hfList)
$asList[0] = UBound($asList)-1
Return $asList
EndFunc
Расширение - *.au3
Для начала скачай сам АвтоИт - http://www.autoitscript.com/autoit3/downloads.shtml
Потом скрипты можно компилировать в *.exe и запускать на системах без АвтоИта
Для начала скачай сам АвтоИт - http://www.autoitscript.com/autoit3/downloads.shtml
Потом скрипты можно компилировать в *.exe и запускать на системах без АвтоИта
Loopback, поясни, пожалуйста, какие именно параметры(2,3; с %L понятно), в каком виде? Что подразумевается под дополнительной ком.строкой? Покажи на примере с кавычками, если не трудно.Loopback писал(а):Может быть от 1 до 3-х параметров командной строки
; 1 - список получаемый через %L
; 2 - использовать кавычки или нет (1/0)
; 3 - дополнительная командная строка, если содержит пробелы, то должна быть
; заключена в двойные кавычки. Если в самой строке нужно использовать
; двойные кавычки, используйте две одинарные подряд, они будут заменены на двойные
Всё в соответствии с "техзаданием" в первом посте. Включение второго параметра даст результат как в пункте 2, а третьего - как в пункте 3.Flasher писал(а):Loopback, поясни, пожалуйста, какие именно параметры(2,3; с %L понятно), в каком виде? Что подразумевается под дополнительной ком.строкой?
Например, запуск с ключами
Код: Выделить всё
%L 1 %%1
Код: Выделить всё
"%PROGRAMFILES%\Windows Calendar\WinCal.exe" %1
Код: Выделить всё
%L 0 ''%%1''
Код: Выделить всё
%PROGRAMFILES%\Windows Calendar\WinCal.exe "%1"
Спасибо! Теперь я понял что такое (1/0).
Помимо тех трёх я добавил:
_Add("COMMANDER_DRIVE")
_Add("COMMANDER_INI")
_Add("APPDATA")
_Add("HOMEDRIVE")
_Add("HOMEPATH")
_Add("SYSTEMDRIVE")
_Add("DRIVE_X")
_Add("TEMP")
_Add("USERPROFILE")
_Add("DRIVE_X") - Тут надо понимать, что для работы скрипта на дисках, не связанных с переменными окружения ТС, необходимо предварительно создать похожие переменные для тех букв дисков, в директориях которых будет срабатывать команда. Делается это просто с помощью плагина Environment Variables, в группе Current process (Total Commander), где, например, Name: DRIVE_X | Value: X:\
Помимо тех трёх я добавил:
_Add("COMMANDER_DRIVE")
_Add("COMMANDER_INI")
_Add("APPDATA")
_Add("HOMEDRIVE")
_Add("HOMEPATH")
_Add("SYSTEMDRIVE")
_Add("DRIVE_X")
_Add("TEMP")
_Add("USERPROFILE")
_Add("DRIVE_X") - Тут надо понимать, что для работы скрипта на дисках, не связанных с переменными окружения ТС, необходимо предварительно создать похожие переменные для тех букв дисков, в директориях которых будет срабатывать команда. Делается это просто с помощью плагина Environment Variables, в группе Current process (Total Commander), где, например, Name: DRIVE_X | Value: X:\
Недавно столкнулся с более сложной задачей по изменению пути,
просто надоело вводить в разных местах одно и тоже, что связано с путями и именами...
а потом вспомнил про скрипт Loopback, которым пользуюсь постоянно и он прекрасно работает, как и многие скрипты от этого автора и решил немного его изменить... пришлось прикоснуться к скриптингу .au3 - мне понравилось.
Выкладываю творение, это мой первый скрипт на этом Aу3ыке, поэтому если какие ошибки найдёте - смело сообщайте. В архив добавил иконки для кнопок, может кому пригодится:
Всю подробную информацию и примеры использования читайте в скрипте
http://rghost.ru/2892713
просто надоело вводить в разных местах одно и тоже, что связано с путями и именами...
а потом вспомнил про скрипт Loopback, которым пользуюсь постоянно и он прекрасно работает, как и многие скрипты от этого автора и решил немного его изменить... пришлось прикоснуться к скриптингу .au3 - мне понравилось.
Выкладываю творение, это мой первый скрипт на этом Aу3ыке, поэтому если какие ошибки найдёте - смело сообщайте. В архив добавил иконки для кнопок, может кому пригодится:
Всю подробную информацию и примеры использования читайте в скрипте
http://rghost.ru/2892713
Andrey_A
А, хотя бы, вкратце можно узнать о назначении скрипта?
Кстати, поднятую автором топика задачу можно частично решить с помощью скриптаи кнопки
А, хотя бы, вкратце можно узнать о назначении скрипта?
Кстати, поднятую автором топика задачу можно частично решить с помощью скрипта
Код: Выделить всё
With CreateObject("TCScript.Helper")
.SendCommand "cm_CopyFullNamesToClip", True
.SetTextToClip(Replace(.GetTextFromClip, WScript.Arguments(0), WScript.Arguments(1), 1, -1, 1))
End WithСиним цветом - свой путь к скрипту, зелёным - значения по желанию.TOTALCMD#BAR#DATA
C:\Путь\к\скрипту\Скрипт.vbs "%Commander_Path%"
"%%Commander_Path%%"
%Commander_Path%\WCMICONS.DLL,14
Хитрое копирование имён
-1
Нет, я не сплю. Я просто медленно моргаю.
Andrey_A
11 параметров?!?
Просто скрипт-мутант какой-то получился.
Много расписано, но несколько запутанно, "без поллитра" не разберёшься.
А что за "библиотека поиска и замен (ваша библиотека)"? Чего с ней делать? Да вообще много путаницы. Может стоит просто в теме "Обмен кнопками" написать штук 10-15 со ссылкой на скрипт, а скрипт в UUE тут выложить? Всем заинтересованным сразу полегчает.
11 параметров?!?
Много расписано, но несколько запутанно, "без поллитра" не разберёшься.
А что за "библиотека поиска и замен (ваша библиотека)"? Чего с ней делать? Да вообще много путаницы. Может стоит просто в теме "Обмен кнопками" написать штук 10-15 со ссылкой на скрипт, а скрипт в UUE тут выложить? Всем заинтересованным сразу полегчает.