Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Скрипт для посылания в буфер изменённого пути
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Thu Oct 22, 2009 02:48    Post subject: Скрипт для посылания в буфер изменённого пути Reply with quote

При тоталовской команде 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
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2545
Location: Большая деревня Москва

Post (Separately) Posted: Thu Oct 22, 2009 08:29    Post subject: Reply with quote

http://powerpro.wincmd.ru/Scripts/ClipFileList.htm
http://powerpro.wincmd.ru/Scripts/ClipListDialog.htm
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Thu Oct 22, 2009 23:17    Post subject: Reply with quote

Спасибо за ссылку, очень интересный скрипт, к сожалению у меня с 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
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Thu Oct 22, 2009 23:47    Post subject: Reply with quote

Обрати внимание на AutoIt (скриптовый язык)- там можно и не такое делать (и с тоталом при желании можно подружить). Смотри темы по нему на ру-борде, озоне и т.д. Да и в изучении не такой тяжелый, в общем после небольшой тренировки можешь писать всё, что тебе нужно (а при необходимости задавать вопросы на вышеуказанных форумах, там с радостью помогут).
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 9531
Location: Россия, Саратов

Post (Separately) Posted: Fri Oct 23, 2009 00:04    Post subject: Reply with quote

Andrey_A
Андрей, пользуюсь случаем заметить, что на форумах не принято снабжать (тем более, постоянно) посты подписями типа "С уважением, такой-то". Пост — не письмо, тут свои нормы этикета.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1006

Post (Separately) Posted: Fri Oct 23, 2009 13:18    Post subject: Reply with quote

Идея показалась интересной, написал вот такой скрипт (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
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Sun Oct 25, 2009 18:13    Post subject: Reply with quote

Loopback, спаибо за скрипт, к сожалению, я попробовать его не могу, с Autoit встречаюсь впервые, если не трудно подскажи расширение файла и как его запустить...
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Mon Oct 26, 2009 08:13    Post subject: Reply with quote

Расширение - *.au3
Для начала скачай сам АвтоИт - http://www.autoitscript.com/autoit3/downloads.shtml

Потом скрипты можно компилировать в *.exe и запускать на системах без АвтоИта
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Tue Oct 27, 2009 02:15    Post subject: Reply with quote

Скрипт заработал, правда не все переменные определились автоматом, но отличная возможность прописать вручную Что на Что менять позволило почти всё что я хотел реализовать.
Loopback спасибо
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 13941
Location: Москва

Post (Separately) Posted: Fri Feb 19, 2010 20:56    Post subject: Reply with quote

Loopback wrote:
Может быть от 1 до 3-х параметров командной строки
; 1 - список получаемый через %L
; 2 - использовать кавычки или нет (1/0)
; 3 - дополнительная командная строка, если содержит пробелы, то должна быть
; заключена в двойные кавычки. Если в самой строке нужно использовать
; двойные кавычки, используйте две одинарные подряд, они будут заменены на двойные
Loopback, поясни, пожалуйста, какие именно параметры(2,3; с %L понятно), в каком виде? Что подразумевается под дополнительной ком.строкой? Покажи на примере с кавычками, если не трудно.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1006

Post (Separately) Posted: Sun Feb 21, 2010 21:41    Post subject: Reply with quote

Flasher wrote:
Loopback, поясни, пожалуйста, какие именно параметры(2,3; с %L понятно), в каком виде? Что подразумевается под дополнительной ком.строкой?

Всё в соответствии с "техзаданием" в первом посте. Включение второго параметра даст результат как в пункте 2, а третьего - как в пункте 3.
Например, запуск с ключами
Code:

%L 1 %%1

даст результат
Code:

"%PROGRAMFILES%\Windows Calendar\WinCal.exe" %1


а с ключами
Code:

%L 0 ''%%1''

даст результат
Code:

%PROGRAMFILES%\Windows Calendar\WinCal.exe "%1"
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 13941
Location: Москва

Post (Separately) Posted: Wed Feb 24, 2010 05:47    Post subject: Reply with quote

Спасибо! Теперь я понял что такое (1/0).Smile
Помимо тех трёх я добавил:
_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
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Tue Oct 12, 2010 09:36    Post subject: Reply with quote

Недавно столкнулся с более сложной задачей по изменению пути,
просто надоело вводить в разных местах одно и тоже, что связано с путями и именами...
а потом вспомнил про скрипт Loopback, которым пользуюсь постоянно и он прекрасно работает, как и многие скрипты от этого автора и решил немного его изменить... пришлось прикоснуться к скриптингу .au3 - мне понравилось.
Выкладываю творение, это мой первый скрипт на этом Aу3ыке, поэтому если какие ошибки найдёте - смело сообщайте. В архив добавил иконки для кнопок, может кому пригодится:
Всю подробную информацию и примеры использования читайте в скрипте
http://rghost.ru/2892713
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2200
Location: Москва, Россия

Post (Separately) Posted: Tue Oct 12, 2010 13:27    Post subject: Reply with quote

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
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 13941
Location: Москва

Post (Separately) Posted: Tue Oct 12, 2010 13:37    Post subject: Reply with quote

Andrey_A
11 параметров?!? Shocked Просто скрипт-мутант какой-то получился. Smile
Много расписано, но несколько запутанно, "без поллитра" не разберёшься. Wink
А что за "библиотека поиска и замен (ваша библиотека)"? Чего с ней делать? Да вообще много путаницы. Может стоит просто в теме "Обмен кнопками" написать штук 10-15 со ссылкой на скрипт, а скрипт в UUE тут выложить? Всем заинтересованным сразу полегчает. Smile
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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