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

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

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

Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

sproxy



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

 

Код:
#region: - Options
    Opt('MustDeclareVars', 1)
    Opt('TrayIconDebug',   1)
    Opt('TrayIconHide',    0)
#endregion
 
HotKeySet('!{ESC}', '_Pro_Exit'); Закрыть скрипт: Alt + ESC
 
Local   $sSerchInDirPath    = 'D:\Мои закачки\LIve\RRR\'
Local   $sFilesSerchRegMask = '.+\.lnk'; Фильтр поиса файлов, заданный в виде регулярного выражения.
Local   $sDirsSerchRegMask  = '.*'; Фильтр поиса директорий, заданный в виде регулярного выражения.
 
Local   $sDirCreateLnkPath  = 'd:\asdqwd2'; Директория, в которой будут созданы ярлыки. Если 0, -1 или пустая строка, то ярлыки будут созданны в той же директории, в которой был найден файл, на который ссылается ярлык.
Local   $fSaveDirStrct      = 1 ; Восстановить в $sDirCreateLnkPath структуру папок, в которых были найденны искомые файлы
Local   $sAutoItFilePath    = 'd:\test2\Shortcut.au3'; Директория, в которой будет создан результирующий AutoIt файл. Если 0, -1 или пустая строка, то будет путь: @ScriptDir\Shortcut.au3
 
Global  $fShowToolTip       = 1 ; 1 - показывать подсказки; 0 - не показывать подсказки
 
_CreatShortcutAU3File($sSerchInDirPath, $sFilesSerchRegMask, $sDirsSerchRegMask, $sDirCreateLnkPath, $fSaveDirStrct, $sAutoItFilePath)
If @error Then MsgBox(48, 'Ошибка: ' & @error, 'Искомые файлы не найдены')
_ToolTip($sAutoItFilePath, 'Ярлычник: Готово!')
If $fShowToolTip Then Sleep(2500)
 
Func _CreatShortcutAU3File($sSerchInDirPath, $sFilesSerchRegMask, $sDirsSerchRegMask, $sDirCreateLnkPath, $fSaveDirStrct, $sAutoItFilePath)
_ToolTip('подготовка данных ...', 'Ярлычник: Запуск скрипта')
    Local $i, $n, $x, $aFilesList[10], $rDir, $sFileName, $sLnkDirPath, $sLnkName, $sFileDirPath, $aLnkInfo[7], $sType, $sResult, $hFile
 
    $sSerchInDirPath
   = StringStripWS(StringRegExpReplace($sSerchInDirPath, '\\+$', ''), 1+2)
    $sDirCreateLnkPath  = StringStripWS(StringRegExpReplace($sDirCreateLnkPath, '\\+$', ''), 1+2)
    $sAutoItFilePath    = StringStripWS($sAutoItFilePath, 1+2)
 
    $rDir = StringReplace($sSerchInDirPath, '''', '''''')
    $rDir = StringReplace($rDir, '"', '')
 
_ToolTip('подготовка данных ...', 'Ярлычник: Поиск файлов')
    $aFilesList = _GetFilesDirsList($sSerchInDirPath, $sFilesSerchRegMask, $sDirsSerchRegMask)
    If NOT $aFilesList[0] Then Return SetError(1)
_ToolTip('готово!', 'Ярлычник: Поиск файлов')
_ToolTip('подготовка данных ...', 'Ярлычник: Создание кода')
 
    For $i=1 To $aFilesList[0]
_ToolTip('осталось ' & ($aFilesList[0]+1)-$i & ' из ' & $aFilesList[0] & ' ...', 'Ярлычник: Создание кода')
        $sFileName = StringRegExpReplace($aFilesList[$i], '.+\\(.+)$', '\1')
        $sFileDirPath = StringRegExpReplace($aFilesList[$i], '(.+)\\.+$', '\1')
        $sLnkName  = StringRegExpReplace($sFileName, '(.+)\.+.*$', '\1') & '.lnk'
 
        $sLnkDirPath = ''
        If $sDirCreateLnkPath AND $sDirCreateLnkPath <> -1 AND $sSerchInDirPath <> $sDirCreateLnkPath Then
;~          If $fSaveDirStrct Then $sLnkDirPath = StringTrimLeft($sFileDirPath, 3)
;~          $sLnkDirPath = $sDirCreateLnkPath & '\' & $sLnkDirPath

            $sLnkDirPath = $sDirCreateLnkPath & StringReplace($sFileDirPath, $sSerchInDirPath, '')
        Else
            $sLnkDirPath = $sFileDirPath
        EndIf
        $sLnkDirPath = StringRegExpReplace($sLnkDirPath, '\\+$', '')
 
        If StringRegExpReplace($aFilesList[$i], '.+\\.*\.(.+)$', '\1') == 'lnk' Then
            $aLnkInfo = FileGetShortcut($aFilesList[$i])
            If NOT $aLnkInfo[1] Then $aLnkInfo[1] = StringRegExpReplace($aLnkInfo[0], '(.+)\\.+$', '\1')
        Else
            $aLnkInfo[0] = $aFilesList[$i]; Путь к целевому файлу
            $aLnkInfo[1] = $sFileDirPath  ; Рабочая директория
            $aLnkInfo[2] = ''             ; Аргументы
            $aLnkInfo[3] = $aFilesList[$i]; Описание
        EndIf
        $aLnkInfo[1] = StringRegExpReplace($aLnkInfo[1], '\\+$', '')
        ReDim $aLnkInfo[15]
 
        $aLnkInfo[4] = $sLnkDirPath; Директория создания ярлыка
        $aLnkInfo[5] = $sLnkDirPath & '\' & $sLnkName; Путь ярлыка
        $aLnkInfo[6] = $sDirCreateLnkPath
 
        For $n=0 To 6
            If NOT $aLnkInfo[$n] Then ContinueLoop
            $aLnkInfo[$n] = StringReplace(StringStripCR($aLnkInfo[$n]), @LF, ' ')
            $aLnkInfo[$n] = StringReplace($aLnkInfo[$n], '''', '''''')
            If $n < 2 OR $n > 3 Then $aLnkInfo[$n] = StringReplace($aLnkInfo[$n], '"', '')
            $aLnkInfo[$n+7] = $aLnkInfo[$n]
            $aLnkInfo[$n] = '''' & $aLnkInfo[$n] & ''''
        Next
 
        For
$n=0 To 5
            If $n == 2 Then ContinueLoop
            For
$x=0 To 6
                If $x == 2 OR $x == 3 OR $x == $n OR StringLeft($aLnkInfo[$n], 1) == '$'Then ContinueLoop
 
                Switch
$x
                    Case 0
                        $sType = '$FP' & $i
                    Case 1
                        $sType = '$FD' & $i
                    Case 3
                        $sType = '$De' & $i
                    Case 4
                        $sType = '$LD' & $i
                    Case 5
                        $sType = '$LP' & $i
                    Case 6
                        $sType = '$RD' & StringRegExpReplace($i, '.', ' ')
                EndSwitch
 
                $aLnkInfo[14] = StringReplace($aLnkInfo[$n], $aLnkInfo[$x+7], '')
                If @extended Then
                    If $aLnkInfo[14] <> '''''' Then
                        $aLnkInfo[$n] = ' & ' & $aLnkInfo[14]
                    Else
                        $aLnkInfo[$n] = ''
                    EndIf
                    $aLnkInfo[$n] = $sType & $aLnkInfo[$n]
                EndIf
 
            Next
        Next
 
        $sResult &= '; ' & $i & @CRLF
        $sResult &= '$LD' & $i & ' = ' & $aLnkInfo[4] & @CRLF
        $sResult &= '$LP' & $i & ' = ' & $aLnkInfo[5] & @CRLF
        $sResult &= '$FD' & $i & ' = ' & $aLnkInfo[1] & @CRLF
        $sResult &= '$FP' & $i & ' = ' & $aLnkInfo[0] & @CRLF
        If $aLnkInfo[3] Then $sResult &= '$De' & $i & ' = ' & $aLnkInfo[3] & @CRLF
        If $aLnkInfo[2] Then $sResult &= '$Ar' & $i & ' = ' & $aLnkInfo[2] & @CRLF
        $sResult &=  @CRLF
    Next
 
    If $sResult == '' Then Return SetError(2)
 
    $sResult  = 'Opt("TrayIconHide", 1)' & @CRLF & @CRLF & '$RD = ' & $aLnkInfo[6] & '' & @CRLF & @CRLF & $sResult & @CRLF & @CRLF & '; Creating shortcuts' & @CRLF
    $sResult &= 'For $i=1 To ' & $aFilesList[0] & @CRLF & _
                @TAB & 'ToolTip(''Остался '' & (' & ($aFilesList[0]+1) & '-$i) & '' из '' & ' & $aFilesList[0] & ', 50, 100, ''Создание ярлыков'')' & @CRLF & _
                @TAB & '$LD = Eval(''LD'' & $i)' & @CRLF & _
                @TAB & '$LP = Eval(''LP'' & $i)' & @CRLF & _
                @TAB & '$FD = Eval(''FD'' & $i)' & @CRLF & _
                @TAB & '$FP = Eval(''FP'' & $i)' & @CRLF & _
                @TAB & '$Ar = Eval(''Ar'' & $i)' & @CRLF & _
                @TAB & '$De = Eval(''De'' & $i)' & @CRLF & _
                @TAB & 'If NOT FileExists($LD) Then DirCreate($LD)' & @CRLF & _
                @TAB & 'FileCreateShortcut($FP, $LP, $FD, $Ar, $De)' & @CRLF & _
                'Next'
 
_ToolTip('запись файла ...', 'Ярлычник: Создание кода')
    If NOT $sAutoItFilePath OR $sAutoItFilePath == -1 Then $sAutoItFilePath = @ScriptDir & '\' & 'Shortcut.au3'
    $hFile = FileOpen($sAutoItFilePath, 2+8)
    FileWrite($hFile, $sResult)
    FileClose($hFile)
_ToolTip('готово!', 'Ярлычник: Создание кода')
EndFunc
 
Func _GetFilesDirsList($sSerchInDirPath, $sFilesSerchRegMask='.*', $sDirsSerchRegMask='.*', $iAddFiles=1, $iAddDirs=0, $fSerchInWrongDir=1, $sRootPath=1, $fAddFromRootDir=1)
_ToolTip($sSerchInDirPath & ' ...', 'Ярлычник: Поиск файлов')
    $sSerchInDirPath = StringRegExpReplace($sSerchInDirPath, '\\+$', '')
    Local   $aResultList[1], $aSubResultList[1], $aSub2ResultList[1], $hSerch, $sFileName, $sFilePath, $fAddToResult, $fIsDir, $fDirsSerchRegMask, $fFilesSerchRegMask, $fSerchInWrongDirSub, $fAddFromRootDirSub, $i
            $aResultList[0] = 0
 
    $hSerch = FileFindFirstFile($sSerchInDirPath & '\' & '*')
    If @error Then Return SetError(1, 0, $aResultList)
 
    If $sRootPath == 1 AND $iAddDirs == 1 AND $fAddFromRootDir Then
        $aResultList[0] += 1
        ReDim $aResultList[$aResultList[0]+1]
        $aResultList[$aResultList[0]] = $sSerchInDirPath
    EndIf
 
    While 1
        $sFileName = FileFindNextFile($hSerch)
        If @error == 1 Then ExitLoop
 
        $sFilePath = $sSerchInDirPath & '\' & $sFileName
 
        $fAddToResult = 0
        $fIsDir = StringInStr(FileGetAttrib($sFilePath), 'D')
        $fDirsSerchRegMask  = StringRegExp(StringRegExpReplace($sFilePath, '.+\\(.+)$', '\1'), $sDirsSerchRegMask)
        $fFilesSerchRegMask = StringRegExp(StringRegExpReplace($sFilePath, '.+\\(.+)$', '\1'), $sFilesSerchRegMask)
 
        $fAddFromRootDirSub  = 1
        If NOT $fDirsSerchRegMask Then $fAddFromRootDirSub = 0
 
        If $fIsDir Then
            If $iAddDirs == 1  AND $fDirsSerchRegMask Then $fAddToResult = 1
        Else
            If $iAddFiles == 1 AND $fFilesSerchRegMask AND $fAddFromRootDir Then $fAddToResult = 1
        EndIf
 
        If $fAddToResult Then
            If $sRootPath == 1 AND NOT $fIsDir Then
                $aResultList[0] += 1
                ReDim $aResultList[$aResultList[0]+1]
                $aResultList[$aResultList[0]] = $sFilePath
            Else
                $aSubResultList[0] += 1
                ReDim $aSubResultList[$aSubResultList[0]+1]
                $aSubResultList[$aSubResultList[0]] = $sFilePath
            EndIf
        EndIf
 
        $fSerchInWrongDirSub = 1
        If NOT $fSerchInWrongDir AND $fIsDir AND NOT $fDirsSerchRegMask Then $fSerchInWrongDirSub = 0
 
        $aSub2ResultList[0] = 0
        If $fIsDir Then
            If $fSerchInWrongDirSub Then _
            $aSub2ResultList = _GetFilesDirsList($sFilePath, $sFilesSerchRegMask, $sDirsSerchRegMask, $iAddFiles, $iAddDirs, $fSerchInWrongDir, 0, $fAddFromRootDirSub)
        EndIf
 
        If $aSub2ResultList[0] Then
            For $i = 1 To $aSub2ResultList[0]
                $aSubResultList[0] += 1
                ReDim $aSubResultList[$aSubResultList[0]+1]
                $aSubResultList[$aSubResultList[0]] = $aSub2ResultList[$i]
            Next
        EndIf
    WEnd
 
    FileClose($hSerch)
 
    For $i=1 To $aSubResultList[0]
        $aResultList[0] += 1
        ReDim $aResultList[$aResultList[0]+1]
        $aResultList[$aResultList[0]] = $aSubResultList[$i]
    Next
 
    Return SetError(0, 0, $aResultList)
EndFunc
 
Func _ToolTip($sText='', $sTitle='')
    If $fShowToolTip Then ToolTip($sText, 50, 100, $sTitle)
EndFunc
 
Func _Pro_Exit()
    Exit
EndFunc

 

Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 18:13 27-06-2009 | Исправлено: sproxy, 06:53 28-06-2009
   

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

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru