View previous topic :: View next topic |
Author |
Message |
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Thu Oct 22, 2009 02:48 Post subject: Скрипт для посылания в буфер изменённого пути |
|
|
При тоталовской команде 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"
Спасибо заранее Андрей А А |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Thu Oct 22, 2009 23:17 Post subject: |
|
|
Спасибо за ссылку, очень интересный скрипт, к сожалению у меня с Power Pro никак не складывается...
Если это возможно, хотелось бы на vbs, или js? недавно попробовал скрипт от AutoHotkey...
Но самое главное, что хотелось - это чтобы в начале скрипта, или в отдельном файле была возможность прописать сколько угодно "замен", скрипт бы поочерёдно сканировал всё это и изменял нашедшее в выделенных путях, и выдавал всё это в буфер
1.%COMMANDER_PATH%|c:\Total Commander
2.%WINDIR%|c:\Windows
3.%PROGRAMFILES%|c:\Program Files
4. ...|...
5. ...|...
кстати, а может быть задействовать какой-то текстовый редактор?..
С уважением Андрей А А |
|
Back to top |
|
|
Samwatas
Joined: 12 Sep 2009 Posts: 95
|
(Separately) Posted: Thu Oct 22, 2009 23:47 Post subject: |
|
|
Обрати внимание на AutoIt (скриптовый язык)- там можно и не такое делать (и с тоталом при желании можно подружить). Смотри темы по нему на ру-борде, озоне и т.д. Да и в изучении не такой тяжелый, в общем после небольшой тренировки можешь писать всё, что тебе нужно (а при необходимости задавать вопросы на вышеуказанных форумах, там с радостью помогут). |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10280 Location: Россия, Саратов
|
(Separately) Posted: Fri Oct 23, 2009 00:04 Post subject: |
|
|
Andrey_A
Андрей, пользуюсь случаем заметить, что на форумах не принято снабжать (тем более, постоянно) посты подписями типа "С уважением, такой-то". Пост — не письмо, тут свои нормы этикета. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Fri Oct 23, 2009 13:18 Post subject: |
|
|
Идея показалась интересной, написал вот такой скрипт (Autoit):
Code: |
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
|
|
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Sun Oct 25, 2009 18:13 Post subject: |
|
|
Loopback, спаибо за скрипт, к сожалению, я попробовать его не могу, с Autoit встречаюсь впервые, если не трудно подскажи расширение файла и как его запустить... |
|
Back to top |
|
|
Samwatas
Joined: 12 Sep 2009 Posts: 95
|
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Tue Oct 27, 2009 02:15 Post subject: |
|
|
Скрипт заработал, правда не все переменные определились автоматом, но отличная возможность прописать вручную Что на Что менять позволило почти всё что я хотел реализовать.
Loopback спасибо |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Feb 19, 2010 20:56 Post subject: |
|
|
Loopback wrote: | Может быть от 1 до 3-х параметров командной строки
; 1 - список получаемый через %L
; 2 - использовать кавычки или нет (1/0)
; 3 - дополнительная командная строка, если содержит пробелы, то должна быть
; заключена в двойные кавычки. Если в самой строке нужно использовать
; двойные кавычки, используйте две одинарные подряд, они будут заменены на двойные | Loopback, поясни, пожалуйста, какие именно параметры(2,3; с %L понятно), в каком виде? Что подразумевается под дополнительной ком.строкой? Покажи на примере с кавычками, если не трудно. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Sun Feb 21, 2010 21:41 Post subject: |
|
|
Flasher wrote: | Loopback, поясни, пожалуйста, какие именно параметры(2,3; с %L понятно), в каком виде? Что подразумевается под дополнительной ком.строкой? |
Всё в соответствии с "техзаданием" в первом посте. Включение второго параметра даст результат как в пункте 2, а третьего - как в пункте 3.
Например, запуск с ключами
даст результат
Code: |
"%PROGRAMFILES%\Windows Calendar\WinCal.exe" %1
|
а с ключами
даст результат
Code: |
%PROGRAMFILES%\Windows Calendar\WinCal.exe "%1"
|
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Feb 24, 2010 05:47 Post subject: |
|
|
Спасибо! Теперь я понял что такое (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:\ |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Tue Oct 12, 2010 09:36 Post subject: |
|
|
Недавно столкнулся с более сложной задачей по изменению пути,
просто надоело вводить в разных местах одно и тоже, что связано с путями и именами...
а потом вспомнил про скрипт Loopback, которым пользуюсь постоянно и он прекрасно работает, как и многие скрипты от этого автора и решил немного его изменить... пришлось прикоснуться к скриптингу .au3 - мне понравилось.
Выкладываю творение, это мой первый скрипт на этом Aу3ыке, поэтому если какие ошибки найдёте - смело сообщайте. В архив добавил иконки для кнопок, может кому пригодится:
Всю подробную информацию и примеры использования читайте в скрипте
http://rghost.ru/2892713 |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Tue Oct 12, 2010 13:27 Post subject: |
|
|
Andrey_A
А, хотя бы, вкратце можно узнать о назначении скрипта?
Кстати, поднятую автором топика задачу можно частично решить с помощью скрипта Code: | With CreateObject("TCScript.Helper")
.SendCommand "cm_CopyFullNamesToClip", True
.SetTextToClip(Replace(.GetTextFromClip, WScript.Arguments(0), WScript.Arguments(1), 1, -1, 1))
End With | и кнопки Quote: | TOTALCMD#BAR#DATA
C:\Путь\к\скрипту\Скрипт.vbs "%Commander_Path%"
"%%Commander_Path%%"
%Commander_Path%\WCMICONS.DLL,14
Хитрое копирование имён
-1
|
Синим цветом - свой путь к скрипту, зелёным - значения по желанию. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Oct 12, 2010 13:37 Post subject: |
|
|
Andrey_A
11 параметров?!? Просто скрипт-мутант какой-то получился.
Много расписано, но несколько запутанно, "без поллитра" не разберёшься.
А что за "библиотека поиска и замен (ваша библиотека)"? Чего с ней делать? Да вообще много путаницы. Может стоит просто в теме "Обмен кнопками" написать штук 10-15 со ссылкой на скрипт, а скрипт в UUE тут выложить? Всем заинтересованным сразу полегчает. |
|
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
|