Скрипты для Total Commander

  1. Offline

    Andrey_A

    Пользователь

    Posts: 275

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



    Сообщение отредактировал LonerD 25 апреля 2017 - 04:38

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

    22 ноября 2011 - 13:03 / #1
  2. Offline

    Andrey_A

    Пользователь

    Posts: 275

    FilesInLineInBufer.vbs
    Расширения\имена выделенных файлов преобразуются в одну строку и отправляются в буфер обмена
    Используется NirCmd.exe - файл можете скачать в шапке темы

    ' 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
    Сообщение отредактировал Andrey_A 9 марта 2012 - 01:17

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

    23 ноября 2011 - 03:29 / #11
  3. Offline

    Andrey_A

    Пользователь

    Posts: 275

    CopyLineInPathToClip.au3
    Преобразование путей выделенных файлов в различные формы (строки) и отправка полученного в буфер обмена

    ; 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
    Сообщение отредактировал Andrey_A 9 марта 2012 - 01:17

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

    23 ноября 2011 - 03:35 / #12
  4. Offline

    Andrey_A

    Пользователь

    Posts: 275

    BufferGo.vbs
    Помещает в буфер обмена заданный текст

    ' 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
    Сообщение отредактировал Andrey_A 9 марта 2012 - 01:18

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

    23 ноября 2011 - 03:38 / #13
  5. Offline

    Andrey_A

    Пользователь

    Posts: 275

    Buffer_N.vbs
    Создание текстового файла с содержимым буфера обмена или именем из буфера обмена

    ' 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
    Сообщение отредактировал Andrey_A 9 марта 2012 - 01:18

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

    23 ноября 2011 - 03:41 / #14
  6. Offline

    Andrey_A

    Пользователь

    Posts: 275

    BuferMusicArtist.au3
    Отправить в буфер полные\короткие имя артистов выделенных музыкальных треков

    ; BuferMusicArtist.au3
    ; ========================   Описание   ===========================================
    ; Отправить в буфер полные\короткие имя артистов выделенных музыкальных треков
    ; ========================  Параметры ===========================================
    ; {Имя\Список файлов} {0\1}
    ; %L 0    - полное имя
    ; %L 1    - короткие имена
    ;
    ; Автор:             Аверин Андрей
    ; Версия:          1.0 (04.04.2011)
    ; Mail:                 Averin-And@yandex.ru
    ; Site:                  http://tc-image.3dn.ru
    ; ==============================================================================
    $aList = _TCHLoadFileList($CmdLine[1])

    $Stroka = "&;Feat; и;Ft.;Vs.;(;+;Феат;,;-and-;_and_; and при уч.;feat.; При Участии;,; pres; pres.; present; vs; vs.; ft;(vs;уч. "
    $Rez = StringSplit($Stroka, ";", 1)
    $sText = ""
    $k = 0

    For $i = 1 To $aList[0]
        $sTemp = $aList[$i]
        $sTemp = StringRight($sTemp, StringLen($sTemp) - StringInStr($sTemp,"\", 1, -1))
        if StringInStr($sTemp, " - " , 1, 1) > 0 Then
            For $s = 1 To UBound($Rez) - 1
                $sss = StringUpper($Rez[$s])
                if StringInStr(StringUpper($sTemp), $sss , 1, 1) > 0 Then
                    if StringInStr($sTemp, "-" , 1, 1) > StringInStr(StringUpper($sTemp), $sss , 1, 1) Then
                        $sTemp = StringLeft($sTemp, StringInStr(StringUpper($sTemp), $sss , 1, 1) - 1)
                        $s = UBound($Rez) - 1
                        $k = 1
                    Endif
                Endif
            Next
            if $k = 0 Then $sTemp = StringLeft($sTemp, StringInStr($sTemp, " - " , 1,1) - 1)
            $k = 0
            $sTemp = StringStripWS($sTemp, 3); удалить пробелы в начале и вконце строки
            if StringLen($sTemp) <> 0 Then
                if $CmdLine[2] = 1 Then
                    if StringInStr($sTemp, " " ,1 , 1) > 0 Then $sTemp = StringLeft($sTemp, StringInStr(StringUpper($sTemp), " " , 1, 1) - 1)
                Endif
                $sText = $sText & $sTemp & @CRLF
            Endif
         Endif
        $sTemp = ""
    Next

    ClipPut(StringTrimRight($sText, 2)); отправить в буфер

    ; Загрузка списка, чтобы выстроить список файлов, полученных
    ; с параметров %L или %l  Total Commandera
    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
    Сообщение отредактировал Andrey_A 9 марта 2012 - 01:18

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

    23 ноября 2011 - 03:44 / #15
  7. Offline

    Andrey_A

    Пользователь

    Posts: 275

    BigFilesCopyInBigFolders.vbs
    Копирование любого количества файлов и папок в любое количество папок

    ' BigFilesCopyInBigFolders.vbs
    '========================   Описание   =====================================
    ' Копирование любого количества файлов и папок в любое количество папок.
    ' В параметры %L
    '====================   Как работает скрипт   ================================
    ' 1. Выделяем объекты (файлы, папки) "что копировать", жмем кнопку.
    ' 2. Далее выделяем папки "куда копировать", жмем кнопку.
    ' Если при выделении папок "куда копировать" ничего не выделено,
    ' скрипт прекращает работу. Или если при выделении папок
    ' "куда копировать" выделены файлы, то они игнорируются.
    ' Автор:             jehaz & Аверин Андрей
    ' Версия:          1.1 (16.08.2007 - 28.10.2011)
    ' Site:                  http://tc-image.3dn.ru
    '========================================================================
    Option Explicit
    Dim Tempdir, PathTempFile, FolderList, FileList, MsgFoldersStr, MsgFileText, MsgFolders
    Dim Argument, MsgFoldersText, StrFolder, StrFiles, CopyFileName, MsgFileStr
    Dim Lenstr, LastChar, Result, TextStreamFL, TextStream

    With CreateObject("Scripting.FileSystemObject")
      If WScript.Arguments.Count>0 Then
        Argument = WScript.Arguments(0)
        Tempdir = CreateObject("WScript.Shell").Environment("Process")("TEMP")
        PathTempFile = Tempdir & "\FileListTemp.txt"
        If .FileExists(PathTempFile) then
          Set FolderList = .GetFile(Argument) : Set FileList = .GetFile(PathTempFile)
          Set TextStream = FolderList.OpenAsTextStream(1)
          MsgFoldersStr = vbNullString : MsgFoldersText = vbNullString
          While Not TextStream.AtEndOfStream
            MsgFoldersStr = TextStream.ReadLine()
            If .FolderExists(MsgFoldersStr) Then MsgFoldersText = MsgFoldersText & MsgFoldersStr & vbCrLf
          Wend
          TextStream.Close
          Set MsgFileStr = FileList.OpenAsTextStream(1)
          MsgFileText = MsgFileStr.ReadAll()
          If MsgFoldersText <> "" then
            Result = MsgBox("Будем копировать?" & vbCrLf & "объекты:"_
            & vbCrLf & MsgFileText & vbCrLf & "в папки:" & vbCrLf & _
            MsgFoldersText, vbYesNo+vbQuestion, "Внимание!")
          Else
            MsgBox "Не выделены папки для для копирования!!! " & vbCrLf & _
            "Временные файлы удалены! " & vbCrLf & "Работа скрипта завершена! "_
            , vbExclamation,"Отмена!!! "
          End If
          MsgFileStr.Close
          If Result = 6 Then
            Set TextStream = FolderList.OpenAsTextStream(1) : StrFolder = vbNullString
            While Not TextStream.AtEndOfStream
              StrFolder = TextStream.ReadLine()
              Set TextStreamFL = FileList.OpenAsTextStream(1) : StrFiles = vbNullString
              While Not TextStreamFL.AtEndOfStream
                StrFiles = TextStreamFL.ReadLine()
                If .FolderExists(StrFolder) Then CreateObject("Shell.Application").NameSpace(StrFolder).CopyHere StrFiles, 20
              Wend
              TextStreamFL.Close
            Wend
            TextStream.Close
            MsgBox "Копирование удачно выполнено!!! ",vbExclamation,"Скопировано! "
          End If
          .DeleteFile PathTempFile, 0
        Else
          .GetFile(Argument).Copy Tempdir & "\FileListTemp.txt"
          MsgBox " Создан список выделенных файлов\папок для копирования!" & vbNewLine &_
           "Теперь перейдите в другую панель и выделите папки," & vbNewLine &_
           "в которые необходимо скопировать выделенное  и ещё раз нажмите кнопку ", _
           vbExclamation ,"Копирование выделенного в группу выделенных папок "
        End If
      End If
    End With
    Set TextStreamFL = Nothing : Set MsgFileStr = Nothing : Set TextStream = Nothing
    Set FolderList = Nothing : Set FileList = Nothing : WScript.Quit
    Сообщение отредактировал Andrey_A 9 марта 2012 - 01:19

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

    23 ноября 2011 - 07:42 / #16
  8. Offline

    Andrey_A

    Пользователь

    Posts: 275

    CopyAllBak.vbs
    Создание бэкапа выделенных файлов\папок

    ' CopyAllBak.vbs
    '================   Описание   =================
    ' Создание бэкапа выделенных файлов\папок
    ' Параметры: {файл-список}
    ' %L
    ' Автор:             Аверин Андрей
    ' Версия:          1.0 (25.09.2010)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '=============================================
    Option Explicit
    Dim ListFile, SelFile
    If WScript.Arguments.Count > 0 Then
      With CreateObject("Scripting.FileSystemObject")
        Set ListFile = .OpenTextFile(WScript.Arguments(0), 1)
        Do While Not ListFile.AtEndOfStream
          SelFile = ListFile.ReadLine
          If .FileExists(SelFile) Then
             .CopyFile SelFile, SelFile & ".bak"
          Else
            If Right(SelFile, 1) = "\" Then SelFile = Left(SelFile, Len(SelFile) - 1)
            .CopyFolder SelFile, SelFile & ".bak"
          End if
        Loop
      End With
      ListFile.Close : Set ListFile = Nothing
    Else
        MsgBox "Не заданы параметры!" & vbNewLine &_
       "Должен быть ОДИН параметр: %L",_
        vbOKOnly + vbInformation, "Создание бэкапа выделенных файлов\папок"
    End If
    WScript.Quit
    Сообщение отредактировал Andrey_A 9 марта 2012 - 01:19

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

    23 ноября 2011 - 07:46 / #17
  9. Offline

    Andrey_A

    Пользователь

    Posts: 275

    CopyAllInPanelN.vbs
    Копирование выделенных файлов\папок в ту же панель с добавлением счётчика

    ' CopyAllInPanelN.vbs
    '========================   Описание   =====================================
    ' Копирование выделенных файлов\папок в ту же панель с добавлением счётчика
    '=======================   Параметры  =====================================
    ' 1-й параметр: файл-список
    ' 2-й параметр: минимальное количество цифр номера добавляемое к имени, если таковое уже есть в панели
    '     - без параметра будет добавляться: имя_1, имя_2, _3, _4
    '     - при 2 - имя_01, имя_02, _03, _04
    '     - при 3 - имя_001, имя_002 .....
    '========================   Примеры   =====================================
    ' %L
    ' %L 2

    ' Автор:             Аверин Андрей
    ' Версия:          1.1 (2010 - 28.10.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '======================================================================
    Option Explicit
    Dim ListFile, SelFile, Name, Ext, Path, FPath, Rank, Delim, n, Num

    If WScript.Arguments.Count = 0 Then
       MsgBox "Не заданы параметры!" & vbNewLine &_
       "Должен быть минимум ОДИН параметр: %L",_
       vbOKOnly + vbInformation, "Копирование файлов\папок со счётчиком"
      WScript.Quit
    End If

    If WScript.Arguments.Count > 1 Then
      Rank = WScript.Arguments(1)
    Else
      Rank = 1
    End If
    Delim = "_" ' если не нужен замените на Delim = ""

    With CreateObject("Scripting.FileSystemObject")
      Set ListFile = .OpenTextFile(WScript.Arguments(0), 1)
      Do While Not ListFile.AtEndOfStream
        SelFile = ListFile.ReadLine
        Path = .GetParentFolderName(SelFile) & "\"
        Name = .GetBaseName(SelFile)
        Ext = .GetExtensionName(SelFile)
        FPath = Path

        Do
          n = n + 1
          If n < 10^Rank Then
            Num = Right(String(Rank, "0") & n, Rank)
          Else
            Num = n
          End If
          FPath = Path & Name & Delim & Num & "." & Ext
        Loop While (.FileExists(FPath) Or .FolderExists(FPath))

        If .FileExists(SelFile) Then .CopyFile SelFile, FPath
        If .FolderExists(SelFile) Then .CopyFolder Left(SelFile, Len(SelFile) - 1), FPath
      Loop
    End With

    ListFile.Close : Set ListFile = Nothing : WScript.Quit
    Сообщение отредактировал Andrey_A 9 марта 2012 - 01:20

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

    23 ноября 2011 - 07:47 / #18
  10. Offline

    Andrey_A

    Пользователь

    Posts: 275

    CopyDubleDate.vbs
    Копирование выделенных файлов\папок в текущий каталог с добавлением текущей даты

    ' CopyDubleDate.vbs
    '========================   Описание   =====================================
    ' Копирование выделенных файлов\папок в текущий каталог с добавлением текущей даты
    ' Параметр %L
    ' Автор:             Аверин Андрей
    ' Версия:          1.1 (2010 - 29.10.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '========================================================================
    Option Explicit
    Dim List, F, Cnt
    If WScript.Arguments.Count = 0 Then
      MsgBox "Не заданы параметры!" & vbNewLine &_
       "Должен быть минимум ОДИН параметр %L",_
        vbOKOnly + vbInformation, "Копирование с добавлением даты"
      WScript.Quit
    End If
    With CreateObject("Scripting.FileSystemObject")
      List = .OpenTextFile(WScript.Arguments(0), 1, False).ReadAll
      For Each F In Split(List, vbNewLine)
        If .FileExists(F) Then
           .CopyFile F, .GetFile(F).ParentFolder.Path & "\" &_
           .GetBaseName(F) & " " & DateTime & "." & .GetExtensionName(F)
        End If
        If .FolderExists(F) Then
           .CopyFolder Left(F, Len(F) - 1), Left(F, Len(F) - 1) & Chr(32) & DateTime
        End If
      Next
    End With
    WScript.Quit

    Function DateTime
      Dim YY, MM, DD, H, M, S
      YY = Year(date) : MM = Month(date) : DD = Day(date)
      H = Hour(time) : M = Minute(time) : S = Second(time)
      DateTime = "[" & Right("0" & YY, 2)  & "." & Right("0" & MM, 2)  & "." & Right("0" & DD, 2)  &_
                            " - " & Right("0" & H, 2)  & "." & Right("0" & M, 2)  & "." & Right("0" & S, 2)  & "]"
    End Function
    Сообщение отредактировал Andrey_A 9 марта 2012 - 01:21

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

    23 ноября 2011 - 08:04 / #19
  11. Offline

    Andrey_A

    Пользователь

    Posts: 275

    CopyFilesSkobaN.vbs
    Создает копию выделенных файлов\папок, добавляя к имени порядковый номер в скобках (идентично TC)

    ' CopyFilesSkobaN.vbs
    '================================================================
    ' Создает копию выделенных файлов\папок, добавляя к имени порядковый номер
    ' в скобках (идентично TC). Если в имени уже присутствует порядковый номер в скобках,
    ' то увеличивает нумерацию до появления незанятого номера.
    ' Параметры %L

    ' Автор:             jehaz & Аверин Андрей
    ' Версия:          1.2 (17.08.2007 - 29.10.2011)
    ' Site:                  http://tc-image.3dn.ru
    '================================================================
    Option Explicit
    Dim FSO, FileList, FileStr, FullName, Counter
    Dim FileName, Ext, Count, BetSkoba, OpenSkoba, BefSkoba, BetSkobaInt, TextStream

    If WScript.Arguments.Count < 1 Then
         MsgBox "Неправильно указано количество параметров!" & vbNewLine &_
         "Должен быть минимум ОДИН параметр  %L", _
         vbOKOnly & vbInformation, "Копирование файлов\папок с добавлением (N)"
       WScript.Quit
    End If

    Set FSO = CreateObject("Scripting.FilesystemObject")
    Set FileList = FSO.GetFile(WScript.Arguments(0))
    Set TextStream = FileList.OpenAsTextStream(1)
    FileStr = vbNullString

    While Not TextStream.AtEndOfStream
      FileStr = TextStream.ReadLine()
      Counter = 1 : FileName = FSO.GetBaseName(FileStr) : Count = Len(FileName)

      Do
          If Mid(FileName, Len(FileName),1) = ")" Then
             Do While Count <> 0
              If Mid(FileName, Count,1) = "(" Then
              OpenSkoba = Count
                 BetSkoba = Mid(FileName, OpenSkoba + 1, Len(FileName) - Count-1)
                 BefSkoba = Mid(FileName, 1, OpenSkoba - 1) : Count = 0
              Else
                 Count = Count - 1
              End If
          Loop

          On Error Resume Next
          BetSkobaInt = FormatNumber(BetSkoba, 0)
          If Err.Number = 0 Then
            If BetSkoba - BetSkobaInt = 0 Then FileName = BefSkoba : Counter = Counter + BetSkobaInt - 1
          End If
        End If
        Count = 0 : Counter = Counter + 1 : Ext = FSO.GetExtensionName(FileStr)
        FullName = FSO.GetParentFolderName(FileStr) & "\" & FileName & "(" & Counter & ")"
        If Ext <> "" Then FullName = FullName & "." & Ext
      Loop until Not (FSO.FileExists(FullName) Or FSO.FolderExists(FullName))

      If FSO.FileExists(FileStr) Then FSO.CopyFile FileStr, FullName
      If FSO.FolderExists(FileStr) Then FSO.CopyFolder Left(FileStr, Len(FileStr) - 1), FullName
    Wend

    Set TextStream = Nothing : Set FileList = Nothing : Set FSO = Nothing : WScript.Quit
    Сообщение отредактировал Andrey_A 9 марта 2012 - 01:21

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

    23 ноября 2011 - 09:04 / #20

Статистика форума, пользователей онлайн: 0 (за последние 30 минут)

---
Создано тем
107
Всего сообщений
4048
Пользователей
99000
Новый участник
termojader