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 

Single Post  Topic: Синхронная смена каталогов 
Author Message
Flasher



PostPosted: Sun Dec 24, 2017 15:52    Post subject: Reply with quote

ingerard wrote:
если папки вдруг не одноименные, то синхронизацию не делать
Вот теперь понятно.
ingerard wrote:
Нужно это для двух хоткеев, аналог "Enter", "Backspace"
Тогда чистой синхронности не получится. Придётся в каждой из панелей выполнять выход. Отдельный скрипт тут совсем ни к чему:
Code:
'••••••••••••••••••••••••• VBS •••••••••••••••••••••••••
' Синхронное открытие одноимённых каталогов в панелях ТС
' Условие: требуется TCScript.dll
' Ключ запрета несинхронного открытия:  /n
' Ключ перехода в родительский каталог: /b
'•••••••••••••••••••••••••••••••••• Автор: Flasher © •••
Option Explicit : Dim FSO, TCS, Key, SP, TP, N, i, T, Ln
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCS = CreateObject("TCScript.Helper")
Set Key = WSH.Arguments.Named
With TCS .Pause = 0 : .Wait = True : SP = .GetSrcPath
  TP = .GetInfo("TP") : N = .GetInfo("SN") : .LockTC True
  If N = ".." Or Key.Exists("b") Then
    If StrComp(FN(SP), FN(TP), 1) = 0 Then
      If FSO.FileExists("\\?\" & Left(SP, Len(SP) - 1)) Then
        T = TP : If .GetInfo("A") = "R" Then TP = SP : SP = T
        .SetLeftPath SP & ":" : .SetRightPath TP & ":"
      ElseIf Right(SP, 1) = "\" Then Call Cm(2002)(4006)(2002)(4006) End If
    ElseIf Not Key.Exists("n") Then Cm(2002) End If
  Else : Dim REx : Set REx = New RegExp : REx.Pattern = "^\\{3}[^\\]+\\"
    If   FSO.FolderExists("\\?\" & REx.Replace(SP, "") & N) Then
      If FSO.FolderExists("\\?\" & REx.Replace(TP, "") & N) Then _
        Cm(2003) : .SetTrgPath TP & N & "\" :_
      Else If Not Key.Exists("n") Then Cm(2003)
    ElseIf FSO.FileExists("\\?\" & SP & N) Then
      If   FSO.FileExists("\\?\" & TP & N) Then .SetTrgPath TP & N & "\" :_
      .Sleep 40 : Ln = Len(.GetInfo("TP")) - Len(TP)
      Select Case True
        Case Ln > 0 Cm(2003)
        Case Ln < 0 Call Cm(4006)(570)(4006)
        Case Ln = "0" Or Not Key.Exists("n") Cm(1001)
      End Select
    End If
  End If : .LockTC False
End With : Set FSO = Nothing : Set TCS = Nothing
Function Cm(y) TCS.SendCommand y, 1: Set Cm = GetRef("Cm") End Function
Function FN(x) FN = FSO.GetFileName(Replace(x, "\\\", "")) End Function

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Thu Dec 28, 2017 01:47; edited 9 times in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group