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 Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Batya



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

Post (Separately) Posted: Tue Oct 12, 2010 14:20    Post subject: Reply with quote

vbs-cкрипт для полного решения изначальной задачи:
Code:
EnvArray = Array("COMMANDER_PATH", "WINDIR", "PROGRAMFILES")
Dim ReplArray
Set ReplArray = CreateObject("Scripting.Dictionary")
ReplArray.Add "Что менять", "На что менять"
ReplArray.Add "Так можно", "несколько раз"
'-----------------------------------
Param1 = 0:Param2 = "":Param3 = ""
If WScript.Arguments.Count > 0 Then Param1 = WScript.Arguments(0)
If WScript.Arguments.Count > 1 Then Param2 = WScript.Arguments(1)
If WScript.Arguments.Count > 2 Then Param3 = WScript.Arguments(2)
With CreateObject("TCScript.Helper")
  .SendCommand "cm_CopyFullNamesToClip", True
  Clip = .GetTextFromClip
  With CreateObject("WScript.Shell")
    For Each E In EnvArray
      E = "%" & E & "%"
      Clip = Replace(Clip, .ExpandEnvironmentStrings(E), E, 1, -1, 1)
    Next
  End With
  For Each K In ReplArray.Keys
    Clip = Replace(Clip, K, ReplArray(K), 1, -1, 1)
  Next
  Clip = vbLf & Clip & vbCr
  If Param1 = "1" Then Clip = RegExpReplace(Clip, "(\n)(.+)(\r)", "$1""$2""$3")
  Clip = RegExpReplace(Clip, "(\n)(.+)(\r)", "$1"   & Param2 & "$2$3")
  Clip = RegExpReplace(Clip, "(\n)(.+)(\r)", "$1$2" & Param3 & "$3")
  Clip = Mid(Clip, 2, Len(Clip) - 2)
  .SetTextToClip(Clip)
End With

Function RegExpReplace(pText, pReplStr1, pReplStr2)
  With New RegExp
    .Pattern    = pReplStr1
    .IgnoreCase = True
    .Global     = True
    RegExpReplace = .Replace(pText, pReplStr2)
  End With
End Function

Здесь в первой строке в массиве EnvArray нужно перечислить переменные окружения, которые могут быть заменены.
Для реализации п.1 задачи начитываем массив ReplArray.
Для реализации п.2 задачи используется первый параметр к скрипту. Значения 1 (добавлять кавычки) или 0 (не добавлять - по умолчанию).
Для реализации п.3 задачи используются второй и третий параметры к скрипту - добавочные приставка и окончание к каждой строке.
_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Tue Oct 12, 2010 16:50; edited 2 times in total
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Oct 12, 2010 14:56    Post subject: Reply with quote

Batya
Какое же это полное решение? А как же пункты 1, 2, 3 ?
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Tue Oct 12, 2010 16:40    Post subject: Reply with quote

Flasher wrote:
Какое же это полное решение? А как же пункты 1, 2, 3 ?

Ну вот, я так и знал, что кто-нибудь спросит Smile
Исправил.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Oct 12, 2010 17:30    Post subject: Reply with quote

Batya
Я догадывался.) Спасибо за VBS-вариант!
Вот теперь и думай, каким скриптом пользоваться..
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 19:01    Post subject: Reply with quote

Quote:
В чём назначение скрипта

Преобразование путей выделенных файлов в различные формы (строки) и отправка полученного в буфер обмена для дальнейшей вставки в различные конфиг файлы (Reg,Bat,Ini....)
Просто все программы имеют свой синтаксис, и везде он связан с именем,путём,расширением... файла. Где-то имя в кавычках, где-то в чёрточках.... Этот скрипт мне облегчил жизнь -
выделил нужные файлы, нажал кнопку с нужными параметры и вставил куда надо.
Quote:
Просто скрипт-мутант какой-то получился

Да, скрипт получился не маленький, но делает он очень многое. Раньше у меня для таких задач было 8 скриптов, а сейчас один
Выкладываю скрипт и примеры кнопок здесь:
Скрипт
Code:
begin 644 CopyLineInPathToClip.rar
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
'Q#U[`$`'````
`
end
sum -r/size 18229/4912

Примеры кнопок:
Code:
begin 644 ButtonCopyLineInPathToClip.rar
M4F%R(1H'`,^0<P``#0````````!"7W0@D$,`20,``.40```">,_Y1T*53#T=
M,QX`(````$)U='1O;D-O<'E,:6YE26Y0871H5&]#;&EP+G1X=`#P@$DG"!W1
M4,C;S4&;WH/P?AQ=-"RW9O0Q:T$&,GB,"-6R;1"FA1)-BPL9L)(^6HDOS:WT
M4J-I8*^RT+%&#JQG2K1H*#2ZMV2;K.;NL\F[6T99:4\T-V))NN\_\W/W/_,Y
MG/C.='_.CF=',/V89F!G0&89[C<HUV_>9+V^QG<"^>NZ\O;P(SS*R<EWWWO^
M0/'EV!R!CO#+BQHJ>?*.@PI,617,?..=Z,M!]+ZOHP@_S'A!U[>8\Y2^-HQ(
MA\DYXA(TGZG3WT?+S9>>:@\56D$9NB8%74H`S\&!6^LB9D+0BPD(\HB'&C=L
MLK#4%JTJ:-2EM3N#E!I\:-7@Y)X$=^?1G3+%)I/V.X4M^!\2WQ7IO_JB@M+8
MS"+2I4G5?G7EF1'F!Q3MVA84";L\/%/J3`"X>&P'[@$'(?8YKAZV8#%)8^5*
M116&2P!^:U%\&F&G2H418Z4^'@1#,Z$WIVUR<=8^388X+24E+=TF\[5"/^CE
M&K3J6::$^C1(7CL&F,:\4P0FD3.I@:S`G'B;""#$N9F$9;R#449]M@%P%Z?5
MZP:^M^IGVNR+_[^.Q2H0AJ`<<88JL![*7>)[I7XX\7CL6?Y';L&&;7G*M@44
M)2O;QL..P@0MX@`K<JFC0=*5+/T(""$NNSI2_086<(5N=(/99*2W1G6D10EU
MU<3;,_<$R-;W#*YF5P%<J[/[89EN"J%)/SI7^R>GA937:3F/E3WT!H.%"CC\
M_QHNAM+=M:U/;\0_P!;_6;,I8V`^Q@.("<[!=84:HC-JC9@23T$,^,!SCIT'
MZ^`3-Q*#NT1VKM9.T3685$JBUCMN@HN;Z)ONU6P"(M)WCT"P1<(.*2N*V3=C
M7^!UGJK:HBM]%LLE#&DA>/!?UP`,ET2TJF6NLG5!N6?)]&EN@<@HSJPY;--=
M$P;$''.8R.UD<>V%0.KG"S.JH6F78@D$W82!,>"%M(,Q>GD7O3#'RWP5%A;J
MNIE3((Q682`G#%-I##I;5<%-#\]_$0C0U(69U<_(K!(OQ=UBG;:_^CQ9,+0A
MWYP>K+-@BY"QW%]6$K/0DRX73%^2RKIA-P5%;2LH6W%O-4H<F\!A*F6BVV#>
C+B;S$5K/[SES<,XO`2C6UO?[-74^[>,LM@O]$,0]>P!`!P``
`
end
sum -r/size 53227/935

Пути и значки вставить свои
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Fri Oct 15, 2010 21:22    Post subject: Reply with quote

Кстати, чтобы не вводить вручную все переменные окружения, можно автоматически получать их из системы (посредством cmd-команды set).
Вот набросал пример такой функции:
Code:
#include <Array.au3>

$aArray = _GetAllEnvVar();  Вызываем функцию, возвращающую массив всех переменных окружения,
If @error Then MsgBox(16, @error, @extended); Если не возникло никаких проблем,
_ArrayDisplay($aArray); То показываем полученный массив переменных.

Func _GetAllEnvVar()
Local $aTmp1, $aTmp2, $iReturn, $sConsoleRead = '', $iPID, $vStruct1, $vStruct2
$iPID = Run(@ComSpec & ' /c set', @SystemDir, @SW_HIDE, 2)
While 1
   $sConsoleRead &= StdoutRead($iPID)
   If @error Then ExitLoop
Wend
$vStruct1 = DllStructCreate('char[' & StringLen($sConsoleRead) & ']')
$vStruct2 = DllStructCreate('char[' & StringLen($sConsoleRead) & ']')
DllStructSetData($vStruct1, 1, $sConsoleRead)
$iReturn = DllCall('User32.dll','BOOLEAN', 'OemToCharA', 'ptr', DllStructGetPtr($vStruct1), 'ptr', DllStructGetPtr($vStruct2))
If @error Then Return SetError(@error, @extended, '')
$aTmp1 = StringSplit(DllStructGetData($vStruct2, 1), @CRLF, 3)
If @error Then Return SetError(@error, @extended, '')
Dim $aResult[UBound($aTmp1)-1][2]
For $i = 0 to UBound($aResult)-1
   $aTmp2 = StringSplit($aTmp1[$i], '=')
   If @error Then Return SetError(@error, @extended, '')
   If $aTmp2[0] = 2 Then
      $aResult[$i][0] = $aTmp2[1]
      $aResult[$i][1] = $aTmp2[2]
   Else
      Return SetError(@error, @extended, '')
   EndIf
Next
Return $aResult
EndFunc
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Mon Oct 18, 2010 09:30    Post subject: Reply with quote

Samwatas
Все переменные учитывать некорректно. Например, есть переменная "NUMBER_OF_PROCESSORS", значение которой у меня равно "2". Так что же, везде, где в именах есть "2", вставлять "%NUMBER_OF_PROCESSORS%"?
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Mon Oct 18, 2010 10:18    Post subject: Reply with quote

Я привел заготовку функции (которая получает ВСЕ переменные). Каждый может доработать её для работы только с путями под свои потребности (если это нужно). Например, проверять $aResult[$i][1] на наличие шаблона пути (например <буква>:\), можно также исключить переменную Path. Короче говоря каждый может настроить ее под себя (функция возвращает массив переменных, а вы уже делаете с ним, что хотите).
Back to top
View user's profile Send private message
Hedin



Joined: 25 Sep 2019
Posts: 12

Post (Separately) Posted: Wed Sep 25, 2019 11:18    Post subject: Reply with quote

Подскажите, а как связать выложенный vbs-скрипт и команду cm_CopyFullNamesToClip, т.е. как заставить скрипт заработать?
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Sep 25, 2019 13:05    Post subject: Reply with quote

Hedin
См. памятку подфорума. Мой скрипт так выглядит:
Code:
'=============================== VBS ================================
' Скопировать полные имена выбранных объектов с переменными окружения
' Параметры: %Z%WL
'====================================================================
Option Explicit : Dim List, Dic, F, i, Keys, oList, K, All
If WSH.Arguments.Count Then List = WSH.Arguments(0) Else WSH.Quit
Set Dic = CreateObject("Scripting.Dictionary") : Dic.CompareMode = 1
With CreateObject("WScript.Shell").Environment("Process")
  For Each F in Split("COMMANDER_INI COMMANDER_PATH COMMONPROGRAMW6432 " &_
  "COMMONPROGRAMFILES(x86) COMMONPROGRAMFILES PUBLIC PROGRAMFILES(x86) " &_
  "PROGRAMW6432 PROGRAMFILES WINDIR TMP TEMP LOCALAPPDATA APPDATA " &_
  " USERPROFILE ALLUSERSPROFILE COMMANDER_DRIVE SYSTEMDRIVE HOMEDRIVE")
    i = .Item(F) : If i <> "" Then If Not Dic.Exists(i) Then Dic.Add i, F
  Next
End With : Keys = Dic.Keys
Set oList = CreateObject("Scripting.FileSystemObject").OpenTextFile(List,,,-1)
Do: F = oList.ReadLine
  For i = 0 To Dic.Count - 1
    K = Keys(i) : If InStr(1, F, K, 1) Then _
    F = Replace(F, K, "%" & Dic(K) & "%", 1, -1, 1) : Exit For
  Next
  All = All & vbCrLf & F
Loop Until oList.AtEndOfStream : oList.Close
With CreateObject("SAPI.SpFileStream")
  .Format.Type = 1 : .Open List, 3 : .Write Mid(All, 3) : .Close
End With
CreateObject("WScript.Shell").Run "%ComSpec% /q/c clip<" & List, 0
Dic.RemoveAll : Set Dic = Nothing : Set oList = Nothing

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hedin



Joined: 25 Sep 2019
Posts: 12

Post (Separately) Posted: Thu Sep 26, 2019 15:42    Post subject: Reply with quote

Flasher
Спасибо! Заработало. Выбрал Ваш скрипт.
Back to top
View user's profile Send private message
ToniZa



Joined: 01 Apr 2020
Posts: 11

Post (Separately) Posted: Thu Apr 02, 2020 00:25    Post subject: Прошу помощи, SOS Reply with quote

Flasher wrote:
Hedin
См. памятку подфорума. Мой скрипт так выглядит:
Код:...


Есть очень похожая задача (ну, по сути - та же самая, только копировать в буфер, подменять, а затем вставлять их в текст, нужно пути с ftp сервера).

Но... - большая просьба - не надо бить меня по печенкам и закидывать камнями - я простой чайник и мне сложно вотэтофсё. Можно, для чайника, на пальцах, как-что-кому-куда-чё-пихать? Embarassed

В смысле - как повесить команду (какую-нить) на кнопку - я знаю. Но, как привязать к ней скрипт, так, чтоб он работал - не знаю. (что такое "памятка подфорума" я тоже не нашел).

И, главное - как потом заменить переменные, чтобы у меня менялось то, что нужно на то, что нужно?

Не откажите старому, больному человеку... Embarassed
_________________
ToniZa -
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu Apr 02, 2020 02:18    Post subject: Reply with quote

ToniZa wrote:
а затем вставлять их в текст, нужно пути с ftp сервера
Прочтите название темы. Тут про вставку куда-либо речь не идёт. Только про копирование в буфер. И для родительских папок ftp у вас должны быть заранее (через Autorun/setx) созданы переменные окружения, о которых здесь ведётся речь, иначе это разговор совсем для другого треда.

ToniZa wrote:
что такое "памятка подфорума" я тоже не нашел
Подфорум — это раздел форума, в котором находится текущая тема. Вы в него вошли, прежде чем перейти к этой теме. Логично, что памятку нужно искать прикреплённой в самом начале (сверху первой страницы) этого раздела.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
ToniZa



Joined: 01 Apr 2020
Posts: 11

Post (Separately) Posted: Thu Apr 02, 2020 17:36    Post subject: Reply with quote

Flasher wrote:
Тут про вставку куда-либо речь не идёт. Только про копирование в буфер


Благодарю за разъяснения. Тогда, конкретно и по существу:

Надо регулярно и очень часто копировать ссылки с путями на файлы, лежащие на ftp и записывать их в текстовый файл.

В «оригинале», после копирования ссылка выглядит так:

--- (к сожалению, мне форум не дает использовать формат ссылки в сообщении. Не пропускает!!!)---

Поэтому вид такой дурацкий (на самом деле, понятно, везде должна быть латиница!):

фтп://сервер.домен.ком/папака_1/папка_2/файл.ехт

надо заменять на вид:

хттп://сервер.домен.ком/exchange_II/папака_1/папка_2/файл.ехт


T.e. начальное «ftp» меняется на «http» и после «upload.domain.com/» добавляется промежуточный каталог (всегда один и тот же!): - «/exchange_II/»


Вопрос - нужен скрипт, который при копировании в буфер пути, сразу будет заменять/вставлять требуемые места/дополнения. Так, чтобы при вставке из буфера обмена в файл, ссылка сразу бы получалась нужного вида.

Можете помочь с этим?
_________________
ToniZa -
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Thu Apr 02, 2020 18:39    Post subject: Reply with quote

ToniZa wrote:
Можете помочь с этим?
Да, это просто:
Code:
' Условие: необходим компонент TCScript.dll
Set TCH = CreateObject("TCScript.Helper") : TCH.SendCommand 2018, 1
With New RegExp
  .Global = 1 : .IgnoreCase = 1 : .Pattern = "(^|\n)f(tp://[^/]+/)"
  TCH.SetTextToClip .Replace(TCH.GetTextFromClip, "ht$2exchange_II/")
End With
Set TCH = Nothing
См. п. 7 и ссылку ниже.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
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 Previous  1, 2, 3  Next
Page 2 of 3

 
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