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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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')
 
Local   $sSerchInDirPath    = 'd:\Обмен'
Local   $sFilesSerchRegMask = '.+\.lnk' ; Фильтр поиса файлов, заданный в виде регулярного выражения.
Local   $sDirsSerchRegMask  = '.*' ; Фильтр поиса директорий, заданный в виде регулярного выражения.
 
Local   $sDirCreateLnkPath  = 'd:\qweqwe\' ; Директория, в которой будут созданы ярлыки. Если 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[1], $sFileName, $sDirPath, $sLnkName, $sLnkDirPath, $rDir, $aLnkInfo[7], $hFile, $sResult, $aResultVar, $sResultVar = '|'
 
    $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')
        $sDirPath  = StringRegExpReplace($aFilesList[$i], '(.+)\\.+$', '\1')
        $sLnkName  = StringRegExpReplace($sFileName, '(.+)\.+.*$', '\1') & '.lnk'
 
        $sLnkDirPath = ''
        If $sDirCreateLnkPath AND $sDirCreateLnkPath <> -1 Then
            If
$fSaveDirStrct Then $sLnkDirPath = StringTrimLeft($sDirPath, 3)
            $sLnkDirPath = $sDirCreateLnkPath & '\' & $sLnkDirPath
        Else
            $sLnkDirPath = $sDirPath
        EndIf
        $sLnkDirPath = StringRegExpReplace($sLnkDirPath, '\\+$', '\1')
 
        If StringRegExpReplace($aFilesList[$i], '.+\\.*\.(.+)$', '\1') == 'lnk' Then
            $aLnkInfo = FileGetShortcut($aFilesList[$i])
        Else
            $aLnkInfo[0] = $aFilesList[$i]; Путь к целевому файлу
            $aLnkInfo[1] = $sDirPath      ; Рабочая директория
            $aLnkInfo[2] = ''             ; Аргументы
            $aLnkInfo[3] = $aFilesList[$i]; Описание
        EndIf
 
        $aLnkInfo[4] = $sLnkDirPath; Директория создания ярлыка
        $aLnkInfo[5] = $sLnkName; Путь ярлыка
 
        For $n=0 To 5
            $aLnkInfo[$n] = StringReplace(StringStripCR($aLnkInfo[$n]), @LF, ' ')
            $aLnkInfo[$n] = StringReplace($aLnkInfo[$n], '''', '''''')
            If $n < 2 OR $n > 3 Then $aLnkInfo[$n] = StringReplace($aLnkInfo[$n], '"', '')
 
            If $n == 0 OR $n == 2 OR $n == 5 Then ContinueLoop
 
            $aLnkInfo[$n] = StringReplace($aLnkInfo[$n], $rDir, '')
            If @extended Then
                $aLnkInfo[$n] = '$rDir' & $i & ' & ' & $aLnkInfo[$n]
                ContinueLoop
            EndIf
 
            If
$n <> 4 Then
                $aLnkInfo[$n] = StringReplace($aLnkInfo[$n], $aLnkInfo[4], '')
                If @extended Then
                    $aLnkInfo[$n] = '$LD' & $i & ' & ' & $aLnkInfo[$n]
                    ContinueLoop
                EndIf
            EndIf
 
            If $n <> 1 Then
                $aLnkInfo[$n] = StringReplace($aLnkInfo[$n], $aLnkInfo[1], '')
                If @extended Then
                    $aLnkInfo[$n] = '$FD' & $i & ' & ' & $aLnkInfo[$n]
                    ContinueLoop
                EndIf
            EndIf
        Next
 
        $aLnkInfo[5] = '$LD' & $i & ' & ''\' & $aLnkInfo[5] & ''''; Путь ярлыка
        $aLnkInfo[0] = '$FD' & $i & ' & ''\' & StringRegExpReplace($aLnkInfo[0], '.+\\(.+)$', '\1') & ''''; Путь к целевому файлу
 
        $sResult &= '; ' & $i & @CRLF
        $sResult &= '$LD'   & $i & '   = ' & StringRegExpReplace($aLnkInfo[4], '(\$.+\& )*(.+)', '\1''\2''') & @CRLF
        $sResult &= '$LP'   & $i & '   = ' & $aLnkInfo[5] & @CRLF
        $sResult &= '$FD'   & $i & '   = ' & StringRegExpReplace($aLnkInfo[1], '(\$.+\& )*(.+)', '\1''\2''') & @CRLF
        $sResult &= '$FP'   & $i & '   = ' & $aLnkInfo[0] & @CRLF
        $sResult &= '$Desc' & $i &   ' = ' & StringRegExpReplace($aLnkInfo[3], '(\$.+\& )*(.+)', '\1''\2''') & @CRLF
        $sResult &= '$Args' & $i &   ' = ''' & $aLnkInfo[2] & '''' & @CRLF & @CRLF
    Next
 
    If $sResult == '' Then Return SetError(2)
 
    $sResult  = 'Opt("TrayIconHide", 1)' & @CRLF & @CRLF & '$rDir = ''' & $rDir & '''' & @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 & '$Args = Eval(''Args'' & $i)' & @CRLF & _
                @TAB & '$Desc = Eval(''Desc'' & $i)' & @CRLF & _
                @TAB & 'If NOT FileExists($LD) Then DirCreate($LD)' & @CRLF & _
                @TAB & 'FileCreateShortcut($FP, $LP, $FD, $Args, $Desc)' & @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)
    Sleep(1000)
EndFunc
 
Func _Pro_Exit()
    Exit
EndFunc

 

Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 01:18 26-06-2009 | Исправлено: sproxy, 01:22 26-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