Приветствую Вас Гость | Сегодня: 19.01.2017, Четверг | RSS
   
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 13«12341213»
Форум » Total Commander » Total Commander Image » Скрипты (Тестирование скриптов)
Скрипты
Andrey_AДата: Среда, 12.10.2011, 21:18 | Сообщение # 1
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Тестирование скриптов




Скрипты - уникальный инструмент для достижения различных целей в работе с файлами и не только, особенно в файловом менеджере, даже если вы ничего раньше об этом ничего не слышали и не знали, то путём простых движений вы можете оптимизировать свои действия
Тема тестирования скриптов создана для увеличения функциональности Total Commander
Каждый может выложить свой скрипт написанный на любом языке: vbs, js, hta, au3,ahk, bat,cmd... главное, чтобы он относился как-то к Total Commander, можно было им воспользоваться и к нему было должное описание к применению.
Каждый может протестировать, дать свой комментарий и ...[move]если есть интересная идея, вы можете поделиться ей и заказать скрипт, а вдруг она покажется интересной для авторов...[/move]
Всё это делается для тех, кто хочет экономить время и автоматизировать работу
Огромное спасибо участникам, авторам и всем повлиявшим на тему











Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Среда, 26.10.2011, 21:17 | Сообщение # 21
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Переход в параллельный каталог не заходя в родительский
Используется TCMC.exe - файл можете скачать в шапке темы

Code
' GoParallelDirectory.vbs
'========================   Описание   =====================================
' Переход в параллельный каталог не заходя в родительский

' Автор:             Аверин Андрей
' Версия:          1.1 (14.11.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'====================   Изменяемые пути   ===================================
TCMC = "%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe"
'=========================================================================
Dim WSH
Set WSH = CreateObject("WScript.Shell")
Titles = "Переход в параллельный каталог "
RunTCMC("CM2002  CM2018") : WScript.Sleep 22 : Path1 = GetClip
WSH.SendKeys "{DOWN}" : WScript.Sleep 22
RunTCMC("CM2018") : WScript.Sleep 22 : Path2 = GetClip

If CreateObject("Scripting.FileSystemObject").FolderExists(Path2) Then
  If (StrComp(Path1, Path2 ,vbTextCompare) <> 0) Then
    RunTCMC("CM2003")
  Else
   intButtonClicked = MsgBox ("В этой панели папок больше нет!" & vbNewLine &_
   "Хотите начать cначала?" , 33, Titles)
   If intButtonClicked = 1 Then
     WSH.SendKeys "{HOME}" & "{DOWN}" : WScript.Sleep 200 : RunTCMC("CM2003")
   Else
     WsEnd
   End If
  End If
Else
   intButtonClicked = MsgBox ("Папки закончились, остались только файлы!" & vbNewLine &_
  "Хотите начать cначала?" , 33, Titles)
  If intButtonClicked = 1 Then
    WSH.SendKeys "{HOME}" & "{DOWN}" : WScript.Sleep 200 : RunTCMC("CM2003")
  Else
    WsEnd
  End If
End If

WsEnd

Sub WsEnd : Set WSH = Nothing : WScript.Quit : End Sub
Sub RunTCMC(Comm) : WSH.Exec(TCMC & " 50 " & Comm) : End Sub

Function GetClip
   On Error Resume Next
   GetClip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
End Function


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Среда, 26.10.2011, 21:44 | Сообщение # 22
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Подсчет количества вложенных папок (без рекурсии)

Code
' SummaFoldersInFolder.vbs
'==================================================
' Подсчет количества вложенных папок (без рекурсии)
' В параметрах вызова из TC должно быть прописано:
' %L
' Автор:             Batya
' Версия:          1.0 (19.07.2005)
'==================================================
Dim FSO, StrInFile, SF, M1, TempFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TempFile = FSO.OpenTextFile(WScript.Arguments(0), 1)

SF = 0
Do While Not TempFile.AtEndOfStream
   StrInFile = TempFile.ReadLine
   If FSO.FolderExists(StrInFile) Then
    SF = SF + FSO.GetFolder(StrInFile).SubFolders.Count
   End If
Loop

If SF > 0 Then
   MsgBox "В выделенных каталогах находится" & chr(13) & SF & chr(13) &_
   "вложенных папок в Первом уровне", vbOKOnly + vbInformation, "Результат"
Else
   MsgBox "В выделенных каталогах нет вложенных папок", vbOKOnly + vbExclamation, "Внимание!"
End If

Set TempFile = Nothing
Set FSO = Nothing
Wscript.Quit


Читайте: Справочные материалы по работе c TC + Онлайн справка TC

Сообщение отредактировал Andrey_A - Среда, 26.10.2011, 23:46
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Среда, 26.10.2011, 22:45 | Сообщение # 23
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Создание структуры каталогов вглубь и в ширину
Используется TCMC.exe - файл можете скачать в шапке темы

Code
' StrukturaFolders.vbs
'========================   Описание   =======================================
' Создание структуры каталогов вглубь и в ширину
'========================  Параметры =======================================
' 1-й параметр: путь\создания\каталогов
' 2-й параметр: имя создаваемых каталогов
' 3-й параметр: глубина создаваемых каталогов (1-10)
' 4-й параметр: количество создаваемых каталогов в каждом подкаталоге
' Два параметра обязательны!!! 3 и 4 можно ввести во всплывающих диалогах
'========================    Примеры    =======================================
' %p "%O"               - создать в текущей панели структуру именем файла\папки
' %t "Каталог" 3 5
'
' Автор:             Аверин Андрей
' Версия:          1.4 (2010 - 30.10.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'============================================================================
With WScript
   Cnt = .Arguments.Count
   If Cnt < 2 Then
    MsgBox "Неправильно указано количество параметров!" & vbNewLine &_
     "Должно быть минимум ДВА параметра!" & vbNewLine &_
      "  ""%p"" ""%O""  A у Вас прописано " & Cnt &_
       " !!! " , vbOKOnly & vbInformation, "Создание структуры каталогов"
    .Quit
   Else
    If Cnt > 2 Then
     D = .Arguments(2)
    Else
     If D = 0 or D = "" Then D = InputBox ("Введите ГЛУБИНУ создания каталогов" & vbNewLine &_
      "( Цифру от 1 до 10 )" , "Создание структуры каталогов",1)
     If D = 0 or D = "" Then .Quit
    End If
    If Cnt > 3 Then
     N = .Arguments(3)
    Else
     If N = 0 or N = "" Then N = InputBox ("Введите КОЛИЧЕСТВО каталогов, создаваемых в каждом подкаталоге" ,_
      "Создание структуры каталогов",1)
     If N = 0 or N = "" Then .Quit
    End If
   End If

   Path = .Arguments(0) : FileName = .Arguments(1)
End With

With CreateObject("Scripting.FileSystemObject")
   If Mid(Path,Len(Path),1) = "\" Then
    Path = Path
   Else
    Path = FSO.GetParentFolderName(Path) & "\"
   End If
   If Len(FileName) = 0 Then FileName = "Каталог"

   If D > 0 Then
     For i = 1 To N
       NewFold1 = Path & Numer(1, i) : .CreateFolder(NewFold1)
       If D => 1 Then
         For m = 1 To N
           NewFold2 = NewFold1 &Numer;(2, m) : .CreateFolder(NewFold2)
          If D => 2 Then
             For k = 1 To N
               NewFold3 = NewFold2 & Numer(3, k) : .CreateFolder(NewFold3)
             If D => 3 Then
                 For o = 1 To N
                   NewFold4 = NewFold3 & Numer(4, o) : .CreateFolder(NewFold4)
                 If D => 4 Then
                     For p = 1 To N
                       NewFold5 = NewFold4 & Numer(5, p) : .CreateFolder(NewFold5)
                       If D => 5 Then
                         For l = 1 To N
                           NewFold6 = NewFold5 & Numer(6, l) : .CreateFolder(NewFold6)
                           If D => 6 Then
                             For r = 1 To N
                    NewFold7 = NewFold6 & Numer(7, r) : .CreateFolder(NewFold7)
                    If D => 7 Then
                    For s = 1 To N
                    NewFold8 = NewFold7 & Numer(8, s) : .CreateFolder(NewFold8)
                    If D => 8 Then
                    For t = 1 To N
                    NewFold9 = NewFold8 & Numer(9, t) : .CreateFolder(NewFold9)
                    If D => 9 Then
                    For u = 1 To N
                    NewFold10 = NewFold9 & Numer(10, u) : .CreateFolder(NewFold10)
                    Next
                    End If
                    Next
                    End If
                    Next
                    End If
                             Next
                           End If
                         Next
                       End If
                     Next
                   End If
                 Next
               End If
             Next
           End If
         Next
       End If
     Next
   End If
End With
CreateObject("WScript.Shell").Exec("%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe 100 CM540")
Wscript.Quit

Function Numer(nnn,iii)
   Numer = "\" & FileName & "_" & nnn & "_" & iii\ 100 & (iii Mod 100)\10 & (iii Mod 10)
End Function


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 00:26 | Сообщение # 24
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Структурирование файла Wcmd_*.MNU главного меню Total Commanderа

Code
' StructuraMenuTC.vbs
'===============================================================
' Структурирование файла Wcmd_*.MNU главного меню Total Commanderа
' В параметрах вызова из TC должен быть прописано путь к файлу:
' "%%COMMANDER_PATH%%\Language\Wcmd_Rus.mnu"
' или открывать его под курсором %P%N
'
' Автор:             Аверин Андрей
' Версия:          1.1 (19.09.2010 - 14.11.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'===============================================================
Option Explicit
Dim FSO, ListFile, SetList, Text, i, k, sym, FF, F, P, L, ContrStr, Stroka, Probel, Space
Set FSO = CreateObject("Scripting.FileSystemObject")

FF = WScript.Arguments(0)
F = CreateObject("WScript.Shell").ExpandEnvironmentStrings(FF)
Set ListFile = FSO.OpenTextFile(F, 1)

Space = 7    'изменить если нужен отступ больше или меньше
Text =  "" : ContrStr = 0 : P = 0

Do While Not ListFile.AtEndOfStream
   SetList = ListFile.ReadLine : Stroka = "" : Probel = ""

   For i = 1 To Len(SetList)
     sym = Mid(SetList, i, 1)
     If sym = "P" Or sym = "M" Or sym = "E" Or sym = "S" Or sym = "H" Or sym = ";" Then
       If   sym = ";" Then L = 0
       k = i : i = Len(SetList)
     End If
   Next

   If  SetList <> "" Then
    For i = k To Len(SetList)
      sym = Mid(SetList, i, 1) : Stroka = Stroka & sym
    Next
   End If

   If P < 0 Then P = 0

   If  Mid(Stroka, 1, 1) = "P" Then
     If  ContrStr = 1 Then P = P + Space
     L = P : ContrStr = 1
   End If

   If  Mid(Stroka, 1, 1) = "M" Then
     If ContrStr = 2 Then
       P = P - Space : ContrStr = 1
     End If
     L = P + Space
   End If

   If  Stroka = "MENUITEM SEPARATOR" Then
     If  ContrStr = 2 Then
       P = P - Space : ContrStr = 1
     End If
     L = P + Space*2
   End If

   If  Mid(Stroka, 1, 1) = "E" Then
     If  ContrStr = 2 Then P = P - Space
     L = P : ContrStr = 2
   End If

   For i = 1 To L
     Probel = Probel & " "
   Next
   Text = Text & Probel & Stroka & vbNewLine : L = 0
Loop

For i = 1 To Len(Text)
   If Right(Text, Len(vbNewLine)) = vbNewLine Then
     Text = Left(Text, Len(Text) - Len(vbNewLine))
   Else
     Exit For
   End If
Next
FSO.CopyFile F, F & ".bak" ' Раскомментируйте если нужна копия файла
FSO.CreateTextFile(F, True).Write(Text)

ListFile.Close : Set ListFile = Nothing : Set FSO = Nothing : WScript.Quit


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 02:30 | Сообщение # 25
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Соединение вынесенных секций из Wincmd.ini в один файл Wincmd.full.ini
Используется FunctionsINIRWS.vbs - файлы можете скачать в шапке темы

Code
' SumWincmd.vbs
'========================   Описание   ======================================
' Соединение вынесенных секций из Wincmd.ini в один файл Wincmd.full.ini
' Автор:             Аверин Андрей
' Версия:          1.1 (10.05.2011 - 27.10.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'========================================================================
Option Explicit
Dim FSO, TC, WC, WCF, WArr, i, sKey, sFile, FS, INI
Set FSO = CreateObject("Scripting.FileSystemObject")
TC =CreateObject("WScript.Shell").ExpandEnvironmentStrings("%COMMANDER_PATH%")
INI = TC & "\Scripts\Include\FunctionsINIRWS.vbs"
Execute FSO.OpenTextFile(INI).ReadAll

WC = TC & "\Wincmd.ini" : WCF = TC & "\Wincmd.full.ini"

Call FSO.CopyFile(WC, WCF, True)

WArr = Array("Buttonbar", "Colors", "Searches", "Associations", "DirMenu", "CustomFields", _
                          "HintsCustomField", "Rename", "MkDirHistory", "SearchIn", "RenameTemplates", _
                          "Selection", "RenameSearchFind", "SearchName", "RenameSearchReplace", _
                          "RightHistory", "LeftHistory", "Command line history", "LeftTabs", "RightTabs", _
                          "SearchText", "OverWriteCustomField", "Left", "Right", "Extensions")
For i = 0 To Ubound(WArr)
   WinCmd(WArr(i))
Next

Set FSO = Nothing : WScript.Quit

Sub WinCmd(Section)
   sKey = ReadINI(WCF, Section, "RedirectSection")
     If sKey <> "" Then
       If InStr(sKey, "/") > 0 Then
         sFile = sKey
         If Mid(sFile, 1, 1) = Chr(34) Then sFile = Mid(sFile, 2)
         If Mid(sFile, 1, Len(sFile)) = Chr(34) Then sFile = Left(sFile, Len(sFile) - 1)
       Else
         sFile = TC & "\" & sKey
       End If
       FS = ReadINISection(sFile, Section)
       If Len(FS) > 0 Then
         On Error Resume Next
         Call WriteINISection(WCF, Section, FS)
       Else
         Call WriteINI(WCF, Section, "RedirectSection", "<DELETE_VALUE>")
       End If
     End If
End Sub


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 03:51 | Сообщение # 26
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Создание ярлыка файла\папки под курсором

Code
' CreateLink.vbs
'========================   Описание   =====================================
' Создание ярлыка файла\папки под курсором
'========================  Параметры =====================================
' 1-й параметр: Путь\к\Файлу\папке для которой создаётся ярлык
' 2-й параметр: Путь\где\создавать\ярлык (по умолчанию Рабочий стол)
' (можно использовать относительные пути)
'========================    Примеры    ====================================
' %P%N - создание ярлыка для файла\папки под курсором на рабочем столе
' %P%N "%%APPDATA%%\Microsoft\Internet Explorer\Quick Launch" - создание ярлыка для файла\папки под курсором в панели ''Быстрого запуска''
' %P%N "%%APPDATA%%\Microsoft\Windows\SendTo" - создание ярлыка для папки под курсором в панели ''Отправить в...''
' %P%N "%%USERPROFILE%%\Links"  - создание ярлыка для папки под курсором в панели ''Ссылки на папки''

' Автор:             Аверин Андрей
' Версия:          1.1 (18.07.2011 - 26.07.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'========================================================================
With WScript
   Cnt = .Arguments.Count
   If Cnt > 0 Then
     File = .Arguments(0)
     If Len(File) = 0 Then WScript.Quit
     If Cnt > 1 Then Path = .Arguments(1)
   End If
End With

Dim FSO, WSH
Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")

If Len(Path) = 0 Then
   Path= WSH.SpecialFolders("Desktop")
Else
   Path= GetPath(Path)
End If
File= GetPath(File)

Name = FSO.GetBaseName(File)

With WSH.CreateShortcut(Path & "\" & Name & ".lnk") ' Создаём ярлык
   .Arguments = ""
   .Description = ""
   .IconLocation = ",0"
   .TargetPath = File
   .WindowStyle = 1
   .WorkingDirectory = FSO.GetParentFolderName(File)
   .Save
End With

Set WSH = Nothing : Set FSO = Nothing : WScript.Quit
Function GetPath(aPath) : GetPath = WSH.ExpandEnvironmentStrings(aPath) : End Function


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 04:15 | Сообщение # 27
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Групповая замена свойств ярлыков

Code
' GroupChangeLNK.vbs
'================   Описание   =================
' Групповая замена свойств ярлыков.
'================  Параметры =================
' {файл-список ярлыков}|{папка с ярлыками}
'
' Примеры параметров при вызове из TC:
' %L
' "%P"
'
' Автор - Batya
' Версия:          1.0 (22.10.2009)
'==========================================
Option Explicit
Dim Mess, FSO, WSH, FF, IsFolder, F, FindStr, ReplStr, Res, Msg, K

On Error Resume Next
Main:CheckErr
On Error GoTo 0
If Res.Count > 0 Then
    For Each K In Res.Keys
      Msg = Msg & vbNewLine & vbNewLine & K & "  -  " & Res(K)
    Next
Else
    Msg = vbNewLine & vbNewLine & Mess(10)
End If
WSH.Popup Mess(9) & Msg, 0, Mess(0)
Quit 0

'Основная процедура
Sub Main
    SetMess
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = CreateObject("WScript.Shell")
    Set Res = CreateObject("Scripting.Dictionary")
    F = ""

    CheckParam

    FindStr = InputBox(Mess(3), Mess(0)):If FindStr = "" Then Quit 0
    ReplStr = InputBox(Mess(4), Mess(0)):If ReplStr = "" Then Quit 0

    If IsFolder Then
      FolderProc FF
    Else
      For Each F In Split(FSO.OpenTextFile(FF).ReadAll, vbNewLine)
        If F <> "" Then
          F = GetPath(F)
          If FSO.FileExists(F)   Then
            FileProc   F
          ElseIf FSO.FolderExists(F) Then
            FolderProc F
          End If
        End If
      Next
    End If
End Sub

'Массив сообщений
Sub SetMess
    Set Mess = CreateObject("Scripting.Dictionary")
    With Mess
      .Add 0,  "Групповая замена свойств ярлыков"
      .Add 1,  "Не указаны параметры!"
      .Add 2,  "Первый параметр не является файлом-списком или папкой!"
      .Add 3,  "Введите искомый текст:"
      .Add 4,  "Введите текст на замену:"
      .Add 5,  "Выполнена замена:"
      .Add 6,  "Возникла ошибка:" & vbNewLine
      .Add 7,  "Возникла ошибка № "
      .Add 8,  "Файл\папка:"
      .Add 9,  "Результат операции:"
      .Add 10, "Замен не произошло."
    End With
End Sub

'Проверка входных параметров
Sub CheckParam
    If WScript.Arguments.Count = 0 Then Err.Raise vbObjectError + 1, "", Mess(1)
    FF = GetPath(WScript.Arguments(0))
    If Not FSO.FileExists(FF) Then
      If Not FSO.FolderExists(FF) Then
        Err.Raise vbObjectError + 2, "", Mess(2)
      Else
        IsFolder = True
      End If
    Else
      IsFolder = False
    End If
End Sub

'Обработка файла-ярлыка
Sub FileProc(pPath)
    Dim lExt, LNK
    On Error Resume Next
    lExt = FSO.GetExtensionName(pPath)
    If LCase(lExt) = "lnk" Then
      Msg = ""
      With WSH.CreateShortcut(pPath)
        .TargetPath       = ReplaceIn("TargetPath", .TargetPath)
        .IconLocation     = ReplaceIn("IconLocation", .IconLocation)
        .WorkingDirectory = ReplaceIn("WorkingDirectory", .WorkingDirectory)
        .Description      = ReplaceIn("Description", .Description)
        .Save
      End With
      If Msg <> "" Then Res.Add pPath, Mess(5) & Msg
      If Err.Number <> 0 Then Res.Add pPath, Mess(6) & "     " & Err.Description
      Msg = ""
    End If
    On Error GoTo 0
End Sub

'Замена в строке
Function ReplaceIn(pType, pStr)
    If InStr(1, pStr, FindStr, 1) > 0 Then
      Msg = Msg & vbNewLine & "    " & pType & ": " & pStr & "  ->  "
      ReplaceIn = Replace(pStr, FindStr, ReplStr, 1, 1, 1)
      Msg = Msg & ReplaceIn
    Else
      ReplaceIn = pStr
    End If
End Function

'Обработка папки
Sub FolderProc(pPath)
    Dim loF
    Set loF = FSO.GetFolder(pPath)
    For Each F In loF.SubFolders
      F = F.Path
      FolderProc F
    Next
    For Each F In loF.Files
      F = F.Path
      FileProc F
    Next
    Set loF = Nothing
End Sub

'Разложить путь при наличии переменных окружения
Function GetPath(pPath)
    GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function

'Проверка, нет ли ошибок
Sub CheckErr
    Dim lMess
    lMess = Mess(7) & Err.Number & ":" & vbNewLine & Err.Description
    If F <> "" Then lMess = lMess & vbNewLine & vbNewLine & Mess(8) & vbNewLine & F
    If Err.Number <> 0 Then
      MessBox lMess, 1
      Quit Err.Number
    End If
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 Quit(pExitCode)
    Set Mess = Nothing
    Set Res  = Nothing
    Set WSH  = Nothing
    Set FSO  = Nothing
    WScript.Quit pExitCode
End Sub


Читайте: Справочные материалы по работе c TC + Онлайн справка TC

Сообщение отредактировал Andrey_A - Четверг, 27.10.2011, 04:17
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 17:33 | Сообщение # 28
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Помещает в буфер обмена заданный текст
Используется NirCmd.exe - файл можете скачать в шапке темы

Code
' BufferGo.vbs
'==================  Описание  ==============================
' Помещает в буфер обмена заданный текст
'=================  Параметры ==============================
' Параметр: "Любой Текст"
'==================  Примеры  ==============================
'  %E                    -  помещает в буфер расширение
' "file:///%p%N"  -  создаёт ссылки на файлы
' "Привет" - отсылает в буфер "Привет"

' Автор:             Аверин Андрей
' Версия:          1.1 (2010 - 27.10.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'==============  Изменяемые пути  ============================
NirCmd = "%COMMANDER_PATH%\NirCmd.exe"
'===========================================================
If WScript.Arguments.Count > 0 Then
   With CreateObject("Scripting.FileSystemObject")
     Tmp = .GetSpecialFolder(2) & "\" & .GetTempName()
     .CreateTextFile(Tmp, True).Write WScript.Arguments(0)
     NirCmd = CreateObject("WScript.Shell").ExpandEnvironmentStrings(NirCmd)
     CreateObject("WScript.Shell").Run Chr(34) & NirCmd & Chr(34) & " " & "clipboard readfile " & Tmp , 2,True
     WScript.Sleep 1000 : .DeleteFile Tmp
   End With
End If


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 17:53 | Сообщение # 29
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Собирает выделенные файлы в один
Используется FunctionsPlus.vbs - файл можете скачать в шапке темы

Code
' SummaTextFiles.vbs
'========================   Описание   =====================================
' Собирает выделенные текстовые файлы в один
'=======================   Параметры  =====================================
' 1-й параметр: Путь гда создавать общий файл
' 2-й параметр: Список путей файлов
' 3-й параметр: Имя создаваемого файла
' 4-й параметр: Разделитель между содержанием файлов
'========================   Примеры   =====================================
' %p %L
' %p %L "All"
' %p %L "All" "========"

' Автор:             Аверин Андрей
' Версия:          1.1 (14.09.2011 - 29.10.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'====================   Изменяемые пути   ==================================
FuncPlus = "%COMMANDER_PATH%\Scripts\Include\FunctionsPlus.vbs"
'========================================================================
With WScript
   Cnt = .Arguments.Count
   If Cnt > 1 Then
     nFolder = .Arguments(0)
     tFile = .Arguments(1)
     If Cnt > 2 Then
       Name = .Arguments(2)
       If Cnt > 3 Then Delim  = .Arguments(3)
     End If
   Else
     MsgBox "Не хватает параметров!" & vbNewLine &_
     "Должно быть прописано минимум 2 параметра %p %L",_
     vbOKOnly & vbInformation, "Объединение файлов"
     .Quit
   End If

   If Len(Name) = 0 Then
     Name = InputBox("Введите имя файла", "Объединение файлов", "All.txt")
     if Len(Name) = 0 Then .Quit
   End If
End With

With CreateObject("Scripting.FileSystemObject")
   Execute .OpenTextFile(CreateObject("WScript.Shell").ExpandEnvironmentStrings(FuncPlus)).ReadAll
   Set TempFile = .OpenTextFile(tFile, 1)
   Do While Not TempFile.AtEndOfStream
     On Error Resume Next
    .OpenTextFile(FFNoExistCount(nFolder & Name), 8, True).Write .OpenTextFile(TempFile.ReadLine, 1).ReadAll & vbNewLine & Delim & vbNewLine
   Loop
End With
TempFile.Close : Set TempFile = Nothing : WScript.Quit


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 18:28 | Сообщение # 30
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Переименовывает файл именем из буфера обмена

Code
' RenameNameBuffer.vbs
'================   Описание   =================
' Переименовывает файл именем из буфера обмена
' Параметры %P%N
'
' Автор:             Аверин Андрей
' Версия:          1.3 (06.10.2010 - 31.08.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'============================================
Dim Clip, Path, NoSymName

Path = WScript.Arguments(0)
Clip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")

If Len(Clip) > 0 Then
   Name = Trim(Clip)
   If InStr(Clip, vbNewLine) > 0 Then Name = Split(Clip, vbNewLine)(0)
   CharArr = Array(vbCrLf,vbCr,vbLf,"\","/","*","?","""",">","<", Chr(32))
   For i = 1 To Ubound(CharArr)
     If InStr(Name, CharArr(i)) > 0 Then Name = Replace(Name,  CharArr(i),"_")
   Next
   With CreateObject("Scripting.FileSystemObject")
     Ext = .GetExtensionName(Path)
     If InStr(Name,".") = 0 And Len(Ext) > 0Then Name = Name & "." & Ext
     pPath = .GetParentFolderName(Path)
     On Error Resume Next
     If .FileExists(Path) Then
       .MoveFile Path, pPath & "\" & Name
     Else
       .MoveFolder Path, pPath & "\" & Name
     End If
   End With
   CreateObject("WScript.Shell").Exec("%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe 100 CM540")
Else
  MsgBox "Скопируйте корректное имя и повторите команду ещё раз!", vbOKOnly &_
  vbCritical , "Переименование файла имением из буфера"
End if
Wscript.Quit


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 18:37 | Сообщение # 31
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Создание в текущей папке для всех файлов с указанным расширением аналогичного файла с другим указанным расширением

Code
' NnulFilesExt1OnExt2.vbs
'========================   Описание   =====================================
' Создание в текущей папке для всех файлов с указанным расширением
' аналогичного файла с другим указанным расширением
'=======================   Параметры  =====================================
' 1-й параметр: путь\к\папке
' 2-й параметр: расширение исходных файлов
' 3-й параметр: расширение создаваемых файлов
' если 2-й и 3-й параметр отсутствуют, их можно ввести в диалоге
'========================   Примеры   =====================================
' %p
' %p mp3 txt
' Автор:             Batya & Аверин Андрей
' Версия:          1.2 (10.05.2006 - 14.11.2011)
' Site:                  http://tc-image.3dn.ru
'========================================================================
CurrentFolder = CreateObject("Shell.Application").NameSpace(WScript.Arguments(0)).Self.Path & "\"
Titles = "Создание зеркальных файлов "
Ext1 = InputBox("Введите РАСШИРЕНИЕ файла, которому" & vbNewLine &_
   "будет делаться зеркальные файл(ы) в текущем каталоге." & vbNewLine &_
   "Пример для ввода: mp3", Titles, "mp3")
If Len(Ext1) = 0 Then WsEnd

Ext2 = InputBox("Введите РАСШИРЕНИЕ зеркальных файлов" & vbNewLine &_
  "Пример для ввода: txt", Titles, "txt")
If Len(Ext2) = 0 Then WsEnd

With CreateObject("Scripting.FileSystemObject")
   If Not .FolderExists(CurrentFolder) Then
     MB = MsgBox("Папка " & CurrentFolder &_
     " не существует!", vbOKOnly + vbExclamation, Titles) : WScript.Quit
   End If

   For Each oFile in .GetFolder(CurrentFolder).Files
     If .GetExtensionName(oFile.Path) = Ext1 Then
       NewFilePath = CurrentFolder & .GetBaseName(oFile.Path) & "." & Ext2
       If Not .FileExists(NewFilePath) Then .CreateTextFile(NewFilePath)
     End If
   Next
End With
Wscript.Quit

Sub WsEnd : MsgBox "Не задано расширение!", vbExclamation, Titles : WScript.Quit : End Sub


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 18:52 | Сообщение # 32
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Переименование выделенного -- добавление даты перед именем

Code
' NameByDate.vbs
'========================   Описание   =====================
' Переименование выделенного -- добавление даты перед именем
' Параметры %L
' Автор:             Volniy & Аверин Андрей
' Версия:          1.1 (2006 - 14.11.2011)
' Site:                  http://tc-image.3dn.ru
'======================================================
With CreateObject("Scripting.FileSystemObject")
   Set StreamFile = .OpenTextFile(WScript.Arguments(0), 1)
   Do While Not StreamFile.AtEndOfStream
     Set theFile = .GetFile(StreamFile.ReadLine)
     theFile.Name = "[" & FormatDateTime(Date,vbShortDate) & "] " & theFile.Name
   Loop
End With
Set theFile = Nothing : Set StreamFile = Nothing : Wscript.Quit


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 18:57 | Сообщение # 33
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Перемещение выделенных файлов\папок на уровень вверх

Code
' MoveOnLevelUp.vbs
'=====================   Описание   ======================
' Перемещение выделенных файлов\папок на уровень вверх
' Параметры: {файл-список}
' Пример  %L
' Автор:             Аверин Андрей
' Версия:          1.3 (11.05.10 - 14.11.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'=======================================================
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
Do While Not ListFile.AtEndOfStream
    SelFile = ListFile.ReadLine : rPath = FName(FName(SelFile)) & "\"
    On Error Resume Next
    If FSO.FileExists(SelFile) Then FSO.MoveFile SelFile, rPath
    If FSO.FolderExists(SelFile) Then FSO.MoveFolder Left(SelFile, Len(SelFile) - 1), rPath
Loop
ListFile.Close : Set ListFile = Nothing : Set FSO = Nothing : WScript.Quit
Function FName(pPath) : FName = FSO.GetParentFolderName(pPath) : End Function


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 19:06 | Сообщение # 34
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Создание плейлиста всех музыкальных треков в папке и подпапках
Используется FunctionsPlus.vbs - файл можете скачать в шапке темы
Code
' MakePlayListsAll.vbs
'========================   Описание   =====================================
' Создание плейлиста всех музыкальных треков в папке и подпапках
'========================  Параметры =====================================
' 1-й параметр: Папка\с\треками
' 2-й параметр: Куда\сохранять\список
'========================   Примеры   =====================================
' %P%N %t%O.m3u - создать в соседней панели плейлист M3U всех треков в папки под курсором
' Автор:             Аверин Андрей
' Версия:          1.0 (24.10.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'====================   Изменяемые пути   ===================================
FuncPlus = "%COMMANDER_PATH%\Scripts\Include\FunctionsPlus.vbs"  ' файл с дополнительными функциями
'========================================================================
With WScript
   Cnt = .Arguments.Count
   If Cnt > 1 Then
     Set FSO = CreateObject("Scripting.FileSystemObject")
     pMusic = .Arguments(0) : mFile = .Arguments(1)
     Execute FSO.OpenTextFile(CreateObject("WScript.Shell").ExpandEnvironmentStrings(FuncPlus)).ReadAll ' добавление функций из файла
     Call CreateMusicList(mFile, pMusic)
     Set FSO = Nothing : WScript.Quit
   End If
End With


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Четверг, 27.10.2011, 19:11 | Сообщение # 35
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Создание Font.bar файла - панели Total Commander'a для быстрой установки шрифта файловых панелей
Используется InstalFontInWincmd.vbs - Установить Шрифт для Total Commander

Code
; ListFontBar.au3
; ========================   Описание   =====================================
; Создание Font.bar файла - панели Total Commander'a для быстрой установки шрифта файловых панелей
; ====================   Как работает скрипт   ================================
; 1. Чтение шрифтов из реестра, очистка от мусора, дубликатов, сортировка
; 2. Создание .bar файлов по первым буквам шрифтов (в папке $FontPath)
; 3. Создание Font.bar файла ($FontBarFile)
; ======================   Как использовать   ================================
; 1. запустить скрипт
; 2. перетащить Font.bar на панель Total Commander'a
; 3. сделать кнопку в виде меню (нажать правой кнопкой -> изменить -> галочка в виде меню -> ok)
;
; Автор:             Аверин Андрей
; Версия:          1.4 (20.01.2011 - 08.03.2012)
; Mail:                 Averin-And@yandex.ru
; Site:                  http://tc-image.3dn.ru
; ========================================================================
Dim $aSSS[1000] = [0]
$aSSS[0] = 1
$Text = ""
$bText = ""
$FontText = ""
$FontSym = ""
$sCount = ""
$n = 0
$FontPath = "%COMMANDER_PATH%\BAR\Font" ; папка для создаваемых вспомогательных .bar файлов
$FontBarFile = "%COMMANDER_PATH%\BAR\000_Font.bar" ; основной .bar файл
$AutoIt = "%COMMANDER_PATH%\Utilities\Scripting\AutoIt\AutoIt3.exe" ; путь к AutoIt3.exe
$Script = "%COMMANDER_PATH%\Scripts\CreateBar\ListFontBar.au3" ; путь к этому скрипту
$FontInst = "%COMMANDER_PATH%\Scripts\SysScript\InstalFontInWincmd.vbs" ; путь к скрипту, который устанавливает шрифт в Total Commander
$IconIcl = "%COMMANDER_PATH%\Wcmicons.dll" ; путь к библиотеке с иконками
$NIcon1 = 322 ; номер иконки для вспомогательных .bar файлов
$NIcon2 = 1249 ; номер иконки для основного .bar файла
$NIcon3 = 80   ; номер иконки обновления
$FPath = _TCHExpandEnv($FontPath)
DirCreate($FPath)
FileDelete($FPath & "\*.bar")
FileDelete($FPath & "\*.br2")

; адреса реестра из которых считываются шрифты
$aSSS =_ReadRegg("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontMapper",$aSSS[0] , $aSSS)
$aSSS =_ReadRegg("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts",$aSSS[0], $aSSS)
__ArrayQuickSort1D($aSSS, 1, $aSSS[0])

; создание .bar файлов шрифтов в отдельной папке
; шрифты объединяютя в один .bar файл по первой букве
$Text = "[Buttonbar]" & @CRLF & "Buttoncount=>>>>" & @CRLF
For $kk = 1 to $aSSS[0] + 1
   $tFont = _FirstLetterUp($aSSS[$kk])    ; название шрифта
   $Sym = StringMid($tFont, 1, 1)               ; первая буква
   if $Sym <> $sCount Then
     if $kk <> 1 Then
       $BarFile = $FontPath & "\Font_" & $sCount & ".bar"
       $Text = StringReplace($Text, ">>>>", $n)
       FileWrite(FileOpen(_TCHExpandEnv($BarFile), 2+8+32), $Text)
       $FontText = $FontText & $BarFile & ";"    ; строка путей создаваемых . bar файлов
       $FontSym = $FontSym & $sCount & ";"    ; строка из первых букв шрифтов
       $n = 0
       $Text = "[Buttonbar]" & @CRLF & "Buttoncount=>>>>"
     EndIf
   EndIf
   $sCount = $Sym
   $n = $n + 1
   $Text = $Text  & @CRLF & _
                  "cmd" & $n & "=" & $FontInst & @CRLF & _
                  "param"& $n & "=" & Chr(34) & Chr(34) & $tFont & Chr(34) & Chr(34) & @CRLF & _
                  "menu"& $n & "=Установить шрифт " & Chr(34) & $tFont & Chr(34) & @CRLF & _
                  "button"& $n & "=" & $IconIcl & "," & $NIcon1
Next

; запись созданных .bar файлов в основной для отображении на панели Total Commander'a
$n = 4
$Fs = StringSplit($FontSym, ";", 1) ; массив путей создаваемых . bar файлов
$Ft = StringSplit($FontText, ";", 1)  ; массив первых букв шрифтов
$bText = "[Buttonbar]" & @CRLF & _
                  "Buttoncount=" & UBound($Ft) + 1 & @CRLF &  _
                  "cmd1=" & @CRLF &  _
                  "button1=" & @CRLF &  _
                  "cmd2=" & $AutoIt & Chr(32) & Chr(34) & $Script & Chr(34) & @CRLF &  _
                  "button2=" & $IconIcl & "," & $NIcon3 & @CRLF & _
                  "menu2=Обновить" & @CRLF & _
                  "cmd3=" & @CRLF &  _
                  "button3="
For $ii = 1 To UBound($Ft) - 2
   $bText = $bText  & @CRLF & _
                  "cmd"& $n & "=" & $Ft[$ii] & @CRLF & _
                  "button"& $n & "=" & $IconIcl & "," & $NIcon2 & @CRLF & _
                  "menu"& $n & "=Шрифты " & Chr(34) & $Fs[$ii] & Chr(34) & @CRLF & _
                  "iconic"& $n & "=1"
   $n = $n + 1
Next

FileWrite(FileOpen(_TCHExpandEnv($FontBarFile), 2+8+32), $bText)

; функция считывает раздел из реестра и заносит имена в массив с определёнными условиями
; нулевая позиция массива является длинной
Func _ReadRegg($Adres,$n,$aS)
   For $i = 1 to 1000
     $var = RegEnumVal($Adres, $i) ; Вернуть название значения(Ключ реестра, начиная с N)
     if @error <> 0 Then ExitLoop
     if $n = 1 Then
       $aS[1] = _DelFromLne($var)
       $n = $n + 1
     Endif
     if StringInStr($var, "&") = 0 Then
           $var = _Dudlicat($var,$aS)
       if StringLen($var) > 2 Then
         $aS[$n] = $var
         $n = $n + 1
       Endif
     Else
        $Rez = StringSplit($var, " & ", 1)
       For $s = 1 To UBound($Rez) - 1
         $var = $Rez[$s]
         $var = _Dudlicat($var,$aS)
           if StringLen($var) > 2 Then
             $aS[$n] = $var
             $n = $n + 1
           EndIf
       Next
     Endif
   Next
   $aS[0] = $n - 1
   Return $aS
EndFunc

; функция сортирует массив по первым символам (в алфавитном порядке)
Func _SortSym(ByRef $aStrings, $ff)
   For $mm = 0 to  $ff - 1
     if  StringLeft($aStrings[$mm],1) > StringLeft($aStrings[$mm+1],1) Then
       $Temp = $aStrings[$mm+1]
       $aStrings[$mm+1] = $aStrings[$mm]
       $aStrings[$mm] = $Temp
       $mm = 0
     Endif
   Next
   Return $aStrings
EndFunc

; функция проверяет, есть ли строка уже в масиве, если да, то делает её пустой ""
Func _Dudlicat($Line, $dubList)
   $Line = _DelNum($Line)          ; очистка от цифр
   $Line = _DelFromLne($Line)  ; очистка от мусора
     For $pp = 1 To UBound($dubList) - 1
       if $dubList[$pp] = $Line Then
         $pp = UBound($dubList)
         $Line = ""
       Endif
     Next
   Return $Line
EndFunc

; функция удаления ненужных фраз из строки
; фразы прописываются через ; в $DelText = "(TrueType);Italic;Bold;,"
Func _DelFromLne($Line)
     $DelText = "(TrueType);Italic;Bold;,;(All res);(VGA res);(VGA)"
     $Dell = StringSplit($DelText, ";", 1) ; разрезаем строку, создаём массив
       For $ii = 1 To UBound($Dell) - 1
         $Line = StringReplace($Line, $Dell[$ii] , "")
       Next
     $Line = StringStripWS($Line, 3) ; удалить пробелы в начале и вконце строки
   Return $Line
EndFunc

; функция удаления цифр из строки
Func _DelNum($Line)
     $DelText = "1;2;3;4;5;6;7;8;9;0"
     $Dell = StringSplit($DelText, ";", 1)
       For $ii = 1 To UBound($Dell) - 1
         $Line = StringReplace($Line, $Dell[$ii] , "")
       Next
     $Line = StringStripWS($Line, 3)
   Return $Line
EndFunc

; функция преобразования строки "Первый Символ С Большой Буквы"
Func _FirstLetterUp($Line)
   $sLine = ""
     For $ii = 1 To StringLen($Line)
       $Sym = StringMid($Line, $ii, 1)
       if $ii = 1 Then
         $Sym = StringUpper($Sym)
       Else
         if $Sym = " " Then
           $ii = $ii + 1
           $Sym = " " & StringUpper(StringMid($Line, $ii, 1))
         Else
           $Sym = StringLower($Sym)
         EndIf
       EndIf
       $sLine = $sLine & $Sym
     Next
   Return $sLine
EndFunc

; функция разворачивания переменных окружения
Func _TCHExpandEnv($sText)
   $aResult = StringRegExp($sText, "%(\w+)%", 3)
     If IsArray($aResult) Then
       For $i = 0 To UBound($aResult)-1
         $sText = StringReplace($sText, "%" & $aResult[$i] & "%", EnvGet($aResult[$i]))
       Next
     EndIf
   Return $sText
EndFunc

; быстрая сортирока массива по в алфавитном порядке
Func __ArrayQuickSort1D(ByRef $avArray, ByRef $iStart, ByRef $iEnd)
  If $iEnd <= $iStart Then Return
  Local $vTmp
  ; InsertionSort (faster for smaller segments)
  If ($iEnd - $iStart) < 15 Then
   Local $vCur
   For $i = $iStart + 1 To $iEnd
    $vTmp = $avArray[$i]

    If IsNumber($vTmp) Then
     For $j = $i - 1 To $iStart Step -1
      $vCur = $avArray[$j]
      ; If $vTmp >= $vCur Then ExitLoop
      If ($vTmp >= $vCur And IsNumber($vCur)) Or (Not IsNumber($vCur) And StringCompare($vTmp, $vCur) >= 0) Then ExitLoop
      $avArray[$j + 1] = $vCur
     Next
    Else
     For $j = $i - 1 To $iStart Step -1
      If (StringCompare($vTmp, $avArray[$j]) >= 0) Then ExitLoop
      $avArray[$j + 1] = $avArray[$j]
     Next
    EndIf

    $avArray[$j + 1] = $vTmp
   Next
   Return
  EndIf

  ; QuickSort
  Local $L = $iStart, $R = $iEnd, $vPivot = $avArray[Int(($iStart + $iEnd) / 2)], $fNum = IsNumber($vPivot)
  Do
   If $fNum Then
    ; While $avArray[$L] < $vPivot
    While ($avArray[$L] < $vPivot And IsNumber($avArray[$L])) Or (Not IsNumber($avArray[$L]) And StringCompare($avArray[$L], $vPivot) < 0)
     $L += 1
    WEnd
    ; While $avArray[$R] > $vPivot
    While ($avArray[$R] > $vPivot And IsNumber($avArray[$R])) Or (Not IsNumber($avArray[$R]) And StringCompare($avArray[$R], $vPivot) > 0)
     $R -= 1
    WEnd
   Else
    While (StringCompare($avArray[$L], $vPivot) < 0)
     $L += 1
    WEnd
    While (StringCompare($avArray[$R], $vPivot) > 0)
     $R -= 1
    WEnd
   EndIf

   ; Swap
   If $L <= $R Then
    $vTmp = $avArray[$L]
    $avArray[$L] = $avArray[$R]
    $avArray[$R] = $vTmp
    $L += 1
    $R -= 1
   EndIf
  Until $L > $R

  __ArrayQuickSort1D($avArray, $iStart, $R)
  __ArrayQuickSort1D($avArray, $L, $iEnd)
EndFunc   ;==>__ArrayQuickSort1D


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Пятница, 28.10.2011, 00:31 | Сообщение # 36
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Расширения\имена выделенных файлов преобразуются в одну строку и отправляются в буфер обмена
Используется NirCmd.exe - файл можете скачать в шапке темы
Code
' FilesInLineInBufer.vbs
'========================   Описание   =======================================
' Расширения\имена выделенных файлов преобразуются в одну строку и отправляются в буфер обмена
' разделитель между расширениями\именами, начало и конец строки в параметрах
' (одинаковые расширения\имена в строку не добавляются)
'========================  Параметры =======================================
' 1-й параметр: Cписок файлов
' 2-й параметр:
'   "1" - в строку войдут расширения файлов
'   "2" - в строку войдут имена файлов
'   "3" - в строку войдут "чистые имена" файлов (без расширения)
' 3-й параметр: Разделитель
' 4-й параметр: Начало строки
' 5-й параметр: Конец строки
'========================    Примеры    ======================================
' %L "1" ";*." "*." ";"    -  результат   *.vbs;*.txt;*.au3;*.exe;*.cmd;
' %L "2" ";"                   -  результат   Read_me.txt;Wincmd.ini;Wcmicons.dll
' %L "3" "|"                    -  результат   Read_me|Wincmd|Wcmicons

' Автор:             Аверин Андрей
' Версия:          1.2 (20.12.2010 - 23.10.2011)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'====================   Изменяемые пути   ====================================
NirCmd = "%COMMANDER_PATH%\NirCmd.exe"
'==========================================================================
Cnt = WScript.Arguments.Count
If Cnt > 2 Then
   Dim FSO, WSH
   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set WSH = WScript.CreateObject("WScript.Shell")
   Endd = "" : Home = "" : Text = ""
   Delim = WScript.Arguments(2)
   If Cnt > 3 Then
     Home = WScript.Arguments(3)
     If Cnt > 4 Then Endd = WScript.Arguments(4)
   End If
   Set ListFile = FSO.OpenTextFile(GetPath(WScript.Arguments(0)), 1)
   Do While Not ListFile.AtEndOfStream
     File = ListFile.ReadLine
     Select Case WScript.Arguments(1)
       Case 1 Stroka = FSO.GetExtensionName(File)
       Case 2 Stroka = FSO.GetBaseName(File) & "." & FSO.GetExtensionName(File)
       Case 3 Stroka = FSO.GetBaseName(File)
     End Select
     If InStr(UCase(Text), UCase(Stroka)) = 0 Then Text = Text & Stroka & Delim
   Loop

   Text = Home & Left(Text, Len(Text) - Len(Delim)) & Endd
   Tmp = FSO.GetSpecialFolder(2) & "\" & FSO.GetTempName()
   FSO.CreateTextFile(Tmp, True).Write Text
   WSH.Run Chr(34) & GetPath(NirCmd) & Chr(34) & " " & "clipboard readfile " & Tmp , 2,True
   WScript.Sleep 1000
   FSO.DeleteFile Tmp
Else
   MsgBox "Не хватает параметров!" & vbNewLine &_
   "Должно быть минимум ТРИ параметра!  ""%L"" ""1"" "";""" & vbNewLine &_
   "A у Вас прописано " & Cnt & " !!! " , vbOKOnly &_
   vbInformation, "Расширения\Имена выделенных файлов одной строкой"
End If

Set ListFile = Nothing : Set WSH = Nothing : Set FSO = Nothing: WScript.Quit
Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Пятница, 28.10.2011, 00:43 | Сообщение # 37
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Преобразование путей выделенных файлов в различные формы (строки) и отправка полученного в буфер обмена

Code
; CopyLineInPathToClip.au3
; ========================   Описание   ==========================================
; Преобразование путей выделенных файлов в различные формы (строки) и отправка полученного в буфер обмена
; ========================  Параметры ==========================================
; Может быть от 1 до 11-ти параметров командной строки
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; !!! Первые ТРИ параметра обязательны !!!
; 1) Номер библиотеки "ПОИСКА И ЗАМЕН"
; 2) Фал список или %L
; 3) Номер (условие преобразования пути)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; 4) Текстовая вставка перед путём
; 5) Текстовая вставка после пути
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; 6) Дополнительная строка поиска
; 7) Дополнительная строка замен
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; 8) Номер (условие преобразования пути) (вставляется справа от вышеописанного)
; 9) Номер (условие преобразования пути) (вставляется слева от вышеописанного)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; 10) Текстовая вставка (вставляется справа от вышеописанного)
; 11) Текстовая вставка (вставляется слева от вышеописанного)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; т.е конфигурация получаемой строки справа налево (параметры)
;    (10)    <--   (8)      <--    (4)   <--     (3)    -->    (5)     -->    (9)   -->   (11)
; (вставка) (преобр.) (вставка) (преобр.) (вставка) (преобр.) (вставка)
;   (текст)      (путь)        (текст)      (путь)        (текст)       (путь)      (текст)
;
; ========================  Параметр №1  ========================================
; Библиотека ПОИСКА и ЗАМЕН. Каждый может организовать свой набор построчной замены пути.
; В скрипте уже прописаны три библиотеки:
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; №1 Пустая. Ничего не изменяет в пути
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; №2 Заменяет обычные пути на переменные окружения.
; путь c:\Total Commander Commander\LANGUAGE\Wcmd_Rus.ini будет заменён на %COMMANDER_PATH%\LANGUAGE\Wcmd_Rus.ini
; путь c:\Program Files\Movie Maker\MOVIEMK.exe заменён на %PROGRAMFILES%\Movie Maker\MOVIEMK.exe
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; №3 Удаляет из пути переменные окружения
; путь c:\Total Commander Commander\LANGUAGE\Wcmd_Rus.ini будет заменён на LANGUAGE\Wcmd_Rus.ini
; путь c:\Program Files\Movie Maker\MOVIEMK.exe на Movie Maker\MOVIEMK.exe
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Для того чтобы создать свою библиотеку в скрипте после библиотеки №3 необходимо прописать
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;if $CmdLine[1] = N Then   ; N - число следующей библиотеки (в данном случае 4)
;_Add($Line7,$Line6)
; _Add("ЧТО ИСКАТЬ", "ЧЕМ ЗАМЕНЯТЬ") ; условий поиска может быть сколь угодно
;Endif
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Чтобы использовать ту или иную библиотеку необходимо прописать в командной строке её НОМЕР
; Принцип работы: путь переданный %L обрабатывается всеми условиями из библиотеки
; Далее поступает для обработки внешними параметрами, описанными ниже
;
; ========================  Параметр №3 №8 №9 ==================================
; НОМЕР (условие дополнительного преобразования пути)
; к примеру после обработки в библиотеки поиска и замен путь выглядит следующим образом:
; c:\Total Commander\Scripts\Buffer\Read Me.txt    -  используя НОМЕРА будет получаться следующее:
; {1 %L 0}    -  0  - ничего не делает                 =    c:\Total Commander\Scripts\Buffer\Read Me.txt
; {1 %L 1}    -  1  - полный путь в кавычках              =    "c:\Total Commander\Scripts\Buffer\Read Me.txt"
; {1 %L 2}    -  2  - расширение           =    txt
; {1 %L 3}    -  3  - расширение в кавычках            =   "txt"
; {1 %L 4}    -  4  - "чистое" имя          =    Read Me
; {1 %L 5}    -  5  - "чистое" имя в кавычках       =  "Read Me"
; {1 %L 6}    -  6  - имя с расширением                    =    Read Me.txt
; {1 %L 7}    -  7  - имя с расширением в кавычках              =   "Read Me.txt"
; {1 %L 8}    -  8  - путь без расширения        =     c:\Total Commander\Scripts\Buffer\Read Me
; {1 %L 9}    -  9  - путь без расширения в кавычках     =   "c:\Total Commander\Scripts\Buffer\Read Me"
; {1 %L 10}  - 10 - путь родительской папки       =     c:\Total Commander\Scripts\Buffer
; {1 %L 11}  - 11 - путь родительской папки в кавычках  =  "c:\Total Commander\Scripts\Buffer"
; {1 %L 12}  - 12 - путь дедушкиной папки                =    c:\Total Commander\Scripts
; {1 %L 13}  - 13 - путь дедушкиной папки в кавычках     =  "c:\Total Commander\Scripts"
; {1 %L 14}  - 14 - путь без диска                    =     Total Commander\Scripts\Buffer\Read Me.txt
; {1 %L 15}  - 15 - путь без диска в кавычках       =   "Total Commander\Scripts\Buffer\Read Me.txt"
; {1 %L 16}  - 16 - путь без диска и корня        =     Scripts\Buffer\Read Me.txt
; {1 %L 17}  - 17 - путь без диска и корня в кавычках       =  "Scripts\Buffer\Read Me.txt"
; {1 %L 20}  - 20 - путь с короткими именами       =    C:\TOTALC~2\Scripts\Buffer\README~1.TXT
; {1 %L 21}  - 21 - путь с короткими именами в кавычках = "C:\TOTALC~2\Scripts\Buffer\README~1.TXT"
; {1 %L 22}  - 22 - короткие имена                  =   README~1.TXT
; {1 %L 23}  - 23 - короткие имена в кавычках                      =  "README~1.TXT"

; ========================  Параметры №4 №5 №10 №11 ===========================
; Позволяет До и После преобразованного пути вставлять нужную текстовую строку
; В строке могут использоваться любые символы, символы %  и " должны удваиваться %% ""
; Вместо кавычек внутри строки лучше использовать  двойные '' (чёрточки), которые будут преобразованы в кавычки
;
; ========================  Параметры №6 №7  ===================================
; Хотя  и есть основные Библиотеки ПОИСКА и ЗАМЕН периодически необходимо
; независимо от них внести Дополнительную замену в путь (к примеру заменить "\" на "\\")
; Это обычные текстовые строки, правила такие же как и описано выше
; Параметр №6 - "ЧТО ИСКАТЬ" №7  - "ЧЕМ ЗАМЕНИТЬ"
;
; =======================  Дополнение == Исключение =============================
; Если первый параметр -1 , то скрипт посылает в буфер обмена текст , прописанный в параметре 2
; -1 "этот текст будет скопирован в буфер обмена"
;
; ========================    Примеры    ==========================================
; пример показывающий принцип работы всех параметров:
; параметры: 1 %L 0 " - может - " " - принимать - " "\" "\\" 6 7 " - строка - " " - любой вид-"
; результат: - строка - Wcmd_Rus.ini - может - C:\\Total Commander\\LANGUAGE\\Wcmd_Rus.ini - принимать - "Wcmd_Rus.ini" - любой вид-
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 1 %L 2 "*." ";"
; результат: *.txt;
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 1 %L 20 "file://"
; результат: file://C:\TOTALC~1\LANGUAGE\Wcmd_Rus.ini
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 3 %L 1 "Copy " " ''%%SystemRoot%%\system32\'' /y"
; результат: Copy "LANGUAGE\Wcmd_Rus.ini" "%SystemRoot%\system32\" /y
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 1 %L 6 "regsvr32.exe ''%%WINDIR%%\system32\" "''"
; результат: regsvr32.exe "%WINDIR%\system32\DynWrapX.dll"
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 3 %L 1 "regedit /s "
; результат: regedit /s "Files\Reg\Autorun\Total_Commander.reg"
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 1 %L 0 "del /F /S /Q ''" "\*.*''"
; результат: del /F /S /Q "C:\Total Commander\Backup\*.*"        (для папок)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 1 %L 6 " Exec(`''%%a\AkelPad.exe'' ''%%a\AkelFiles\Docs\" "''`) Icon(''%%a\AkelFiles\Plugs\ToolBarImage.dll'',90)" "" "" 7
; результат: "AkelHisTory-Rus.txt" Exec(`"%a\AkelPad.exe" "%a\AkelFiles\Docs\AkelHisTory-Rus.txt"`) Icon("%a\AkelFiles\ToolBarImage.dll",89)         (для меню AkelPad)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 1 %L 0 "=''\''" "\''''" "\" "\\" 5
; результат: "KillOK"="\"C:\\TC Image\\Utilities\\Systems\\KillOk\\KillOK.exe\""
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 1 %L 0 "@=""\""" "\""\""%%1\""""" "\" "\\"
; результат: @="\"C:\\Total Commander\\Plugins\\exe\\AkelPad\\AkelPad.exe\" \"%1\""
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 1 %L 5 "'' ''~$folder.desktop$'' " " '''' ''~$folder.nircmd$\" "" "" 6 6 "nircmd.exe shortcut ''~$folder.nircmd$\" "'' ''0''"
; результат: nircmd.exe shortcut "~$folder.nircmd$\TOTALCMD.exe" "~$folder.desktop$" "TOTALCMD" "" "~$folder.nircmd$\TOTALCMD.exe" "0"      (ярлык в nircmd)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 2 %L 1 "" " ''%%1''"
; результат: "%COMMANDER_PATH%\AkelPad.exe" "%1"
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; параметры: 2 %L 0 "CD " "\"
; результат: CD %COMMANDER_PATH%\Plugins\                     (для папок)
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;
; Автор:             Loopback & Аверин Андрей
; Версия:          1.3 (10.10.2010 - 04.01.2012)
; Site:                  http://tc-image.3dn.ru
; ==============================================================================
Global $aSubst[1][2] = [[0,0]]
Global $sResult = "", $sTemp

If $CmdLine[1] = -1 Then
   ClipPut($CmdLine[2])
   Exit
Endif

If $CmdLine[0] < 3 Then
   MsgBox(16 + 262144, "Копирование в буфер изменённые пути выделенных файлов\папок", _
   "Не хватает параметров!" & @CRLF & "Должно быть минимум ТРИ  1 %L 0" & @CRLF & _
    "Пропишите и повторите попытку!" & @CRLF & "Подробную информацию читайте в комментариях скрипта", 10)
   Exit
Endif

$InsertEdgeTextRight =""
$InsertEdgeTextLeft =""
$InsertTextRight =""
$InsertTextLeft =""
$RightEdgeCentr =""
$LeftEdgeCentr =""
$LineCentr =""
$Line6 =">"
$Line7 =">"
If $CmdLine[0] > 5 And $CmdLine[6] <> "" Then $Line6 = StringReplace($CmdLine[6], "''", '"')
If $CmdLine[0] > 6 And $CmdLine[7] <> "" Then $Line7 = StringReplace($CmdLine[7], "''", '"')
; =======================  Дополнение ===========================================
; Тут задаем замены
; _Add("ЧТО ИСКАТЬ", "ЧЕМ ЗАМЕНЯТЬ")
; и формируем в библиотеки
; ======   Библиотека ПОИСКА И ЗАМЕН №1 (ничего не меняется)  =====================
if $CmdLine[1] = 1 Then
_Add($Line6,$Line7)
Endif
; ==============================================================================

; ======   Библиотека ПОИСКА И ЗАМЕН №2 (обычные пути меняются на переменные окружения)  ====
if $CmdLine[1] = 2 Then
_Add(EnvGet("COMMANDER_PATH"), "%COMMANDER_PATH%")                ;  X:\.\.\Total Commander
_Add(EnvGet("PUBLIC"), "%PUBLIC%")               ;  X:\Users\Public
_Add(EnvGet("WINDIR"), "%WINDIR%")               ;  X:\Windows
_Add(EnvGet("TEMP"), "%TEMP%")                ;  X:\Users\86A9~1\AppData\Local\Temp
_Add(EnvGet("APPDATA"), "%APPDATA%")               ;  X:\Users\Пользователь\AppData\Roaming
_Add(EnvGet("USERPROFILE"), "%USERPROFILE%")              ;  X:\Users\Пользователь
_Add(EnvGet("ALLUSERSPROFILE"),"%ALLUSERSPROFILE%")          ;  X:\ProgramData
_Add(EnvGet("LOCALAPPDATA"), "%LOCALAPPDATA%")           ;  X:\Users\Пользователь\AppData\Local
_Add(EnvGet("PROGRAMFILES"), "%PROGRAMFILES%")           ;  X:\Program Files
_Add(EnvGet("COMMONPROGRAMFILES"), "%COMMONPROGRAMFILES%")    ;  X:\Program Files\Common Files
_Add($Line6,$Line7)
Endif
; =============================================================================

; =======   Библиотека ПОИСКА И ЗАМЕН №3 (из пути вначале удаляются переменные)  =======
if $CmdLine[1] = 3 Then
_Add(EnvGet("COMMANDER_PATH") & "\", "")
_Add(EnvGet("WINDIR") & "\", "")
_Add(EnvGet("PROGRAMFILES") & "\", "")
_Add($Line6,$Line7)
Endif
; =============================================================================

; ======   Библиотека ПОИСКА И ЗАМЕН №4 (Замена пути на %a - директория AkelPad'а)  =======
if $CmdLine[1] = 4 Then
  _Add(EnvGet("COMMANDER_PATH"), "%a")
  _Add(EnvGet("PUBLIC"), "%PUBLIC%")               ;  X:\Users\Public
_Add(EnvGet("WINDIR"), "%WINDIR%")               ;  X:\Windows
_Add(EnvGet("TEMP"), "%TEMP%")                ;  X:\Users\86A9~1\AppData\Local\Temp
_Add(EnvGet("APPDATA"), "%APPDATA%")               ;  X:\Users\Пользователь\AppData\Roaming
_Add(EnvGet("USERPROFILE"), "%USERPROFILE%")              ;  X:\Users\Пользователь
_Add(EnvGet("ALLUSERSPROFILE"),"%ALLUSERSPROFILE%")          ;  X:\ProgramData
_Add(EnvGet("LOCALAPPDATA"), "%LOCALAPPDATA%")           ;  X:\Users\Пользователь\AppData\Local
_Add(EnvGet("PROGRAMFILES"), "%PROGRAMFILES%")           ;  X:\Program Files
_Add(EnvGet("COMMONPROGRAMFILES"), "%COMMONPROGRAMFILES%")    ;  X:\Program Files\Common Files
_Add($Line6,$Line7)
Endif
; =============================================================================

; ======   Библиотека ПОИСКА И ЗАМЕН №5 (ВАША БИБЛИОТЕКА)  =======================
if $CmdLine[1] = 5 Then
_Add($Line6,$Line7) ; это условие не меняется, а далее можете прописывать любые условия
_Add("ЧТО ИСКАТЬ_1", "ЧЕМ ЗАМЕНЯТЬ_1")
_Add("ЧТО ИСКАТЬ_2", "ЧЕМ ЗАМЕНЯТЬ_2")
_Add("ЧТО ИСКАТЬ_3", "ЧЕМ ЗАМЕНЯТЬ_3")
Endif
; =============================================================================

$aList = _TCHLoadFileList($CmdLine[2])

; Проверим, нет ли в наших путях заданных строк из библиотеки поиска и замен
For $i = 1 To $aList[0]
  $sTemp = $aList[$i]
     For $j = 1 To $aSubst[0][0]
         $sTemp = StringReplace($sTemp, $aSubst[$j][0], $aSubst[$j][1])
     Next
  if $CmdLine[0] > 2 Then
   $k = 3
   $LineCentr = _StringLine($sTemp)
  Endif
  if $CmdLine[0] > 7 Then
   $k = 8
   $LeftEdgeCentr = _StringLine($sTemp)
  Endif
  if $CmdLine[0] > 8 Then
   $k = 9
   $RightEdgeCentr = _StringLine($sTemp)
  Endif

   If $CmdLine[0] >3 Then $InsertTextLeft = StringReplace($CmdLine[4], "''", '"')
   If $CmdLine[0] >4 Then $InsertTextRight = StringReplace($CmdLine[5], "''", '"')
   If $CmdLine[0] >9 Then $InsertEdgeTextLeft = StringReplace($CmdLine[10], "''", '"')
   If $CmdLine[0] >10 Then $InsertEdgeTextRight = StringReplace($CmdLine[11], "''", '"')
   $sResult &= $InsertEdgeTextLeft & $LeftEdgeCentr & $InsertTextLeft & $LineCentr & _
                          $InsertTextRight & $RightEdgeCentr & $InsertEdgeTextRight & @CRLF
Next

; Уберем лишний перенос строки и скопируем в буфер
ClipPut(StringTrimRight($sResult, 2))

Func _Add($sSubst, $sReplace = Default)
     $aSubst[0][0] += 1
     ReDim $aSubst[$aSubst[0][0]+1][2]
         $aSubst[$aSubst[0][0]][0] = $sSubst
         $aSubst[$aSubst[0][0]][1] = $sReplace
EndFunc

; Загрузитесь, чтобы выстроить список файлов, полученных с %L или %l TC
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

; Функция реверса строки (нужно для некоторых строчных операций)
Func _StringReverse($s_String)
    Local $i_len = StringLen($s_String)
    If $i_len < 1 Then Return SetError(1, 0, "")
    Local $t_chars = DllStructCreate("char[" & $i_len + 1 & "]")
    DllStructSetData($t_chars, 1, $s_String)
    Local $a_rev = DllCall("msvcrt.dll", "ptr:cdecl", "_strrev", "ptr", DllStructGetPtr($t_chars))
    If @error Or $a_rev[0] = 0 Then Return SetError(2, 0, "")
    Return DllStructGetData($t_chars, 1)
EndFunc   ;==>_StringReverse

; Функция преобразования полного пути в различные формы
Func _StringLine($sTLine)
    if StringInStr($sTLine,"\",1,-1) = StringLen($sTLine) Then $sTLine = StringReplace(StringLeft($sTLine, StringLen($sTLine) - 1), ".", ">>>")
    If $CmdLine[$k] = "" Then $sTLine = ""
    If $CmdLine[$k] = 2 or $CmdLine[$k] = 3 Then $sTLine = _StringReverse(StringLeft(_StringReverse($sTLine), StringInStr(_StringReverse($sTLine), ".", 1, 1) - 1))
         If $CmdLine[$k] = 4 or $CmdLine[$k] = 5 Then $sTLine = StringMid($sTLine, StringInStr($sTLine, "\", 1, -1) + 1, StringInStr(_StringReverse($sTLine),"\", 1, 1) - StringInStr(_StringReverse($sTLine), ".", 1, 1) - 1)
         If $CmdLine[$k] = 6 or $CmdLine[$k] = 7 Then $sTLine = StringRight($sTLine, StringLen($sTLine) - StringInStr($sTLine,"\",1,-1))
         If $CmdLine[$k] = 8 or $CmdLine[$k] = 9 Then $sTLine = StringLeft($sTLine, StringLen($sTLine) - StringInStr(_StringReverse($sTLine), ".", 1, 1))
         If $CmdLine[$k] = 10 or $CmdLine[$k] = 11 Then $sTLine = StringLeft($sTLine, StringInStr($sTLine, "\", 1, -1) - 1)
         If $CmdLine[$k] = 12 or $CmdLine[$k] = 13 Then $sTLine = StringLeft(StringLeft($sTLine, StringInStr(StringLeft($sTLine, StringInStr($sTLine, "\", 1, -1) - 1), "\", 1, -1) - 1), StringInStr($sTLine, "\", 1, -1) - 1)
         If $CmdLine[$k] = 14 or $CmdLine[$k] = 15 Then $sTLine = StringRight($sTLine, StringLen($sTLine) - StringInStr($sTLine, "\", 1, 1))
         If $CmdLine[$k] = 16 or $CmdLine[$k] = 17 Then $sTLine = StringRight($sTLine, StringLen(StringRight($sTLine, StringLen($sTLine) - StringInStr($sTLine, "\",1 , 1))) - StringInStr(StringRight($sTLine, StringLen($sTLine) - StringInStr($sTLine, "\", 1, 1)), "\", 1, 1))
         If $CmdLine[$k] = 20 or $CmdLine[$k] = 21 Then $sTLine = FileGetShortName($sTLine)
         If $CmdLine[$k] = 22 or $CmdLine[$k] = 23 Then $sTLine = StringRight(FileGetShortName($sTLine), StringLen(FileGetShortName($sTLine)) - StringInStr(FileGetShortName($sTLine), "\", 1, -1))
         If $CmdLine[0] > 1 And Mod($CmdLine[$k],2) > 0 Then $sTLine = '"' & $sTLine & '"'
    $sTLine = StringReplace($sTLine, ">>>", ".")
    Return $sTLine
EndFunc


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Andrey_AДата: Пятница, 28.10.2011, 01:11 | Сообщение # 38
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
Создание текстового файла с содержимым буфера обмена или именем из буфера обмена
Используется TCMC.exe - файл можете скачать в шапке темы

Code
' Buffer_N.vbs
'========================   Описание   ========================================
' Создание текстового файла с содержимым буфера обмена или именем из буфера обмена
' (если в папке есть уже фал с таким именем, то создаётся файл ИМЯ_N)
'========================  Параметры ========================================
' 1-й параметр: создаваемый файл
'     - если в параметре есть >>>>, то создаётся файл с именем из буфера
' 2-й параметр: минимальное количество цифр номера добавляемое к имени, если таковое уже есть в панели
'     - без параметра будет добавляться: имя_1, имя_2, _3, _4
'     - при 2 - имя_01, имя_02, _03, _04
'     - при 3 - имя_001, имя_002 .....
' 3-й параметр: разделитель
' 4-й параметр: путь\к\программе в которой откроется файл после создания

' "%p%N"                    файл создаётся в активной панели
' %p\Buffer.vbs 2      файл создаётся в активной панели + номер в виде _0N
' "%p%N" 2                 создание файла с именем файла под курсором ...
' "%p%O.txt" 2           создание текстового файла с именем файла под курсором ...
' "%pRead_Me_%N.txt" 2
' "%p>>>>.txt"          создать пустой txt файл с именем из буфера
' "%p>>>>.vbs" 2     создать пустой vbs файл с именем из буфера
' "%p%O.txt" 1 ""
' "%p\WhatIsIt.txt" "1" "" "%%COMMANDER_PATH%%\Programs\Text\Texter2\Texter2.exe"
' основан на коде Batya
' Автор:             Аверин Андрей
' Версия:          1.6 (27.10.2010 - 25.02.2012)
' Mail:                 Averin-And@yandex.ru
' Site:                  http://tc-image.3dn.ru
'===========================================================================
Option Explicit
'====== Изменяемые параметры ===============================================
Const IsQuestion =  False 'Запрос на создание True
'===========================================================================
Dim FSO, WSH, Mess, FileName, Rank, Clip, NewPath, Title, lDlm
Title = "Создание текстового файла"
FileName = WScript.Arguments(0)

If WScript.Arguments.Count > 1 Then
   Rank = WScript.Arguments(1)
Else
   Rank = 1
End If

If WScript.Arguments.Count > 2 Then
   lDlm = WScript.Arguments(2)
Else
   lDlm = "_"
End If

Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Clip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
If Mid(FileName,Len(FileName),1) = "\" Then FileName = FileName & "FileBuffer.txt"
If Len(Clip) = 0 Or IsNull(Clip) Then Quit

If InStr(FileName, ">>>>") > 0 Then
     FileName = Replace(FileName, ">>>>", Trim(Clip)) : Clip = ""
End If

NewPath = NextName(WSH.ExpandEnvironmentStrings(FileName))

If IsQuestion Then
   Mess = "Буфер обмена содержит текст. Создать файл" & vbNewLine &_
    """" & NewPath & """" & vbNewLine & "с содержимым буфера обмена?" & vbNewLine
   If MsgBox(Mess, vbYesNo + vbQuestion, Title) = 7 Then Quit
End If
On Error Resume Next
FSO.OpenTextFile(NewPath, 2, True).Write Clip
If Err.Number > 0 Then
    MsgBox "В буфере содержится некорректный текст" & vbNewLine &_
    "для создания имени файла", vbOKOnly & vbInformation, Title
    Quit
End If
If WScript.Arguments.Count > 3 Then WSH.Exec(WScript.Arguments(3) & Chr(32) & NewPath)
WSH.Exec("%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe 100 CM540")
Quit

Sub Quit : Set WSH = Nothing : Set FSO = Nothing : WScript.Quit : End Sub

Function NextName(pFilePath)
   Dim lPath, lName, lExt, li, lNum, lNewPath
   lExt = FSO.GetExtensionName(pFilePath)
   If lExt  = "" Then pFilePath = pFilePath & ".txt"

   lPath = FSO.GetParentFolderName(pFilePath)
   lName = FSO.GetBaseName(pFilePath)
   If lName = "" Then pFilePath = lPath & lName & lDlm & "\1." & lExt
   If Len(lPath) > 0 Then lPath = lPath & "\"
   If Not FSO.FileExists(pFilePath) Then
     NextName = pFilePath
     Exit Function
   End If
   Do
     li = li + 1
     If li < 10^Rank Then
       lNum = Right(String(Rank, "0") & li, Rank)
     Else
       lNum = li
     End If
     lNewPath = lPath & lName & lDlm & lNum & "." & lExt
   Loop While FSO.FileExists(lNewPath)
   NextName = lNewPath
End Function


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
satukДата: Пятница, 28.10.2011, 13:00 | Сообщение # 39
Генерал-полковник
Зареген: 05.01.2011
Всего сообщений: 765
Quote (Andrey_A)
Создание текстового файла с содержимым буфера обмена


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


Награды: 10 За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!За 500 Сообщений!!!
Пользователь из города: Киев
Andrey_AДата: Пятница, 28.10.2011, 14:12 | Сообщение # 40
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 430
satuk, если я правильно понял
' "%p%N" 2 создание файла с именем файла под курсором
' "%p%O.txt" 2 создание текстового файла с именем файла под курсором
можно попробовать ещё такие варианты
' "%p%N.txt" 2
"%pRead_Me_%N.txt" 2
"%pRead_Me_%O.txt" 2


Читайте: Справочные материалы по работе c TC + Онлайн справка TC
Награды: 16 Сборщик Total Commander Image! За 100 Сообщений!За 200 Сообщений!!!За 300 Сообщений!!!За 400 Сообщений!!!
Пользователь из города: Сочи, Хоста
Форум » Total Commander » Total Commander Image » Скрипты (Тестирование скриптов)
Страница 2 из 13«12341213»
Поиск:

Copyright by Grey © 2017

Гость
Мини-Чат