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: Script Request 
Author Message
Batya



PostPosted: Mon Nov 09, 2009 19:00    Post subject: Reply with quote

laburj wrote:
хотелось бы скрипт, после запуска которого в противоположной панели на новой вкладке открывался слегка изменённый путь активной вкладки.

Примерно такой vbs:
Code:
'=============================================================================
' Открытие в противоположной панели на новой вкладке TC
'   слегка изменённого пути активной вкладки.
'
' Параметры:
' {текущая папка}
'
' Пример параметров при вызове из TC:
' "%P"
'
' Автор - Batya
'=============================================================================
Option Explicit
Dim Repl, IsCreate
Set Repl = CreateObject("Scripting.Dictionary")
'======== Изменяемые параметры ===============================================
' Массив заменяемых значений
Repl.Add "soft_not_tested", "soft_on_dvd"
Repl.Add "Пример 1", "Пример 2"
IsCreate = False 'Признак создания папки, если полученный путь не существует
'=============================================================================
Dim Mess, FSO, WSH, FF, IsFound
SetMess
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")

On Error Resume Next
CheckParam:CheckErr
On Error GoTo 0
Main
Quit 0

Sub Main
  Dim K, TC
  IsFound = False
  For Each K In Repl.Keys
    If InStr(1, FF, K, vbTextCompare) > 0 Then
      FF = Replace(FF, K, Repl(K), 1, -1, vbTextCompare)
      IsFound = True
      Exit For
    End If
  Next
  If IsFound Then
    If IsCreate Then
      BuildTree FF
    Else
      FF = ExistsLevel(FF)
    End If
    TC = """" & GetPath("%Commander_Path%\totalcmd.exe") & """"
    WSH.Run TC & " /O /S /T /R=""" & FF & """", 1, False
  End If
End Sub

Sub SetMess
  Set Mess = CreateObject("Scripting.Dictionary")
  With Mess
    .Add 0,  "Открытие в TC вкладки с изменённым путём"
    .Add 1,  "Не указаны параметры!"
  End With
End Sub

Sub CheckParam
  If WScript.Arguments.Count = 0 Then Err.Raise vbObjectError + 1, "", Mess(1)
  FF = GetPath(WScript.Arguments(0))
End Sub

Function GetPath(pPath)
  GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function

Function ExistsLevel(pPath)
  If FSO.FileExists(pPath) Or FSO.FolderExists(pPath) Then
    ExistsLevel = pPath
  Else
    ExistsLevel = ExistsLevel(FSO.GetParentFolderName(pPath))
  End If
End Function

'Создание дерева папок
Sub BuildTree(pFolder)
  Dim lPF
  lPF = FSO.GetParentFolderName(pFolder)
  If Not FSO.FolderExists(lPF    ) Then BuildTree lPF
  If Not FSO.FolderExists(pFolder) Then FSO.CreateFolder pFolder
End Sub

Function MessBox(pMess, pMode)
  Dim lIcon
  Select Case pMode
    Case 1 lIcon = vbCritical    + vbOKOnly
    Case 2 lIcon = vbExclamation + vbOKOnly
    Case 3 lIcon = vbInformation + vbOKOnly
  End Select
  MessBox = MsgBox(pMess, lIcon, Mess(0))
End Function

'Проверка, нет ли ошибок
Sub CheckErr
  If Err.Number <> 0 Then
    MessBox Mess(0) & vbNewLine & vbNewLine & "Возникла ошибка № " &_
      Err.Number & ":" & vbNewLine & Err.Description, 1
    Quit Err.Number
  End If
End Sub

Sub Quit(pQuitCode)
  Set Repl = Nothing
  Set Mess = Nothing
  Set WSH  = Nothing
  Set FSO  = Nothing
  WScript.Quit pQuitCode
End Sub

_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Wed Nov 11, 2009 12:50; edited 1 time in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group