Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Плагины для Total Commander (часть 3)

Модерирует : gyra, Maz

Maz (29-03-2022 21:29): Плагины для Total Commander (часть 4)|  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
#NoTrayIcon
 
;2019.02.02
;
; Что-то вроде Lst2Clip
;
; Параметры:
;   --list= - путь к файлу-списку в UTF-16 LE (%WL или %WF), обязательный, должен идти первым;
;   --quote - брать имена в двойные кавычки, необязательный;
;   --one   - всё в одну строку, через пробел, необязательный;
;   --pre=  - префикс, необязательный;
;   --post= - постфикс, необязательный.
; В пре- и постфиксе можно добавить любой символ(ы) юникода по коду (в диапазоне U+0000 - U+FFFF)
; в виде ChrW-<hex-код>, например: ChrW-0020
;
; Всё с учётом регистра! Всё с пробелами должно быть в кавычках.
;
; Пример:
;   --list="%WL" --quote --pre="Трэш и угар " --post=" !"
; на выходе:
;   Трэш и угар "path\to\file1" !
;   Трэш и угар "path\to\file2" !
 
Opt('MustDeclareVars', 1)
 
If $CmdLine[0] = 0 Then
    MsgBox(48 + 4096, StringTrimRight(@ScriptName, 4), 'Ошибка: Проверьте параметры запуска!' & @CRLF & 'Выходим.')
    Exit
EndIf
 
Local $sFileName, $hFile, $sFile, $aFile, $sTmp, $iQuote = 0, $sDelim = @CRLF, $sPre = '', $sPost = ''
 
If StringLeft($CmdLine[1], 7) == '--list=' Then
    ;Получаем имя файла-списка
    $sFileName = __GetCmdValue($CmdLine[1], 7)
    ;Читаем список
    $hFile = FileOpen($sFileName, 0 + 32)
    If $hFile = -1 Then
        MsgBox(48 + 4096, StringTrimRight(@ScriptName, 4), 'Ошибка: Невозможно открыть файл "' & $sFileName & '".')
        Exit
    EndIf
    $sFile = FileRead($hFile)
    FileClose($hFile)
    ;Проверяем конец строки - DOS/Unix/Mac
    Select
        Case StringInStr($sFile, @CRLF) > 0
            $sTmp = @CRLF
        Case StringInStr($sFile, @LF) > 0
            $sTmp = @LF
        Case Else
            $sTmp = @CR
    EndSelect
    ;Убираем конечные слэши, если есть
    $sFile = StringRegExpReplace($sFile, '(?m)(\\$)', '', 0)
    ;Убираем пустую строку в конце, если есть
    $sFile = StringStripWS($sFile, 2)
    ;Помещаем строки в массив
    $aFile = StringSplit($sFile, $sTmp, 1)
    If IsArray($aFile) <> 1 Then
        MsgBox(48 + 4096, StringTrimRight(@ScriptName, 4), 'Ошибка: Что-то не так со списком!' & @CRLF & 'Выходим.')
        Exit
    EndIf
Else
    MsgBox(48 + 4096, StringTrimRight(@ScriptName, 4), 'Ошибка: Проверьте параметры запуска!' & @CRLF & 'Выходим.')
    Exit
EndIf
;Префикс, суффикс, кавычки
For $i = 2 To $CmdLine[0]
    If $CmdLine[$i] == '--quote' Then
        $iQuote = 1
        ContinueLoop
    EndIf
    If $CmdLine[$i] == '--one' Then
        $sDelim = ' '
        ContinueLoop
    EndIf
    If StringLeft($CmdLine[$i], 6) == '--pre=' Then
        $sPre = __GetCmdValue($CmdLine[$i], 6, 1)
    ElseIf StringLeft($CmdLine[$i], 7) == '--post=' Then
        $sPost = __GetCmdValue($CmdLine[$i], 7, 1)
    Else
        ContinueLoop
    EndIf
Next
;Обрабатывем список
$sFile = ''
For $i = 1 To $aFile[0]
    If $iQuote = 1 Then
        $sTmp = $sPre & Chr(34) & $aFile[$i] & Chr(34) & $sPost & $sDelim
    Else
        $sTmp = $sPre & $aFile[$i] & $sPost & $sDelim
    EndIf
    $sFile &= $sTmp
Next
$sFile = StringStripWS($sFile, 2)
;Копируем в буфер
ClipPut($sFile)
 
Func __GetCmdValue($sStr, $iCount, $iU = 0)
    $sStr = StringTrimLeft($sStr, $iCount)
    If StringLeft($sStr, 1) = Chr(34) Then
        $sStr = StringTrimRight(StringTrimLeft($sStr, 1), 1)
    EndIf
    If $iU = 1 Then
        Local $aL = StringSplit($sStr, 'ChrW-', 1)
        If @error <> 1 Then
            $sStr = $aL[1]
            For $i = 2 To $aL[0]
                $sStr &= ChrW(Number('0x' & StringLeft($aL[$i], 4)))
                $sStr &= StringTrimLeft($aL[$i], 4)
            Next
        EndIf
    EndIf
    Return $sStr
EndFunc   ;==>__GetCmdValue

Всего записей: 6462 | Зарегистр. 28-01-2008 | Отправлено: 04:02 02-02-2019
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Плагины для Total Commander (часть 3)
Maz (29-03-2022 21:29): Плагины для Total Commander (часть 4)|


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru