Русское сообщество AutoIt

  • Май 22, 2012, 13:11:22 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:

На форуме было сделано несколько небольших изменений...

1) Расширено поле поиска, теперь можно выбрать, искать в текущей теме, текущем разделе, по всему форуму, или с помощью Google.

2) Новым участникам форума (до 20-ти сообщении) над формой создания новой темы отображается информационный блок с некоторыми правилами и рекомендациями по созданию новой темы.

17.07.2010

Реклама

Автор Тема: [Автоматизация] рекурсивный поиск файлов и преобразование +прогресс-бар  (Прочитано 755 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Tosyk [?]

  • Новичок
  • *
  • Репутация: 0
  • Offline Offline
  • Сообщений: 47
  • Версия AutoIt: 3.3.6.1
    • Награды
Версия AutoIt: 3.3.6.1

Описание:
Часто приходится прибегать в работе к такому скрипту cmd (пример конструктора схемы):
md converted

for /f "tokens=*" %%a in ('dir /b /s *.tga') do (
tool1.exe "%%a"
tool2.exe "%%~dpna_decompressed.tga" "%%~dpna.png"
move "%%a" .\converted
del "%%~dpna_decompressed.tga"
)
После запуска скрипт рекурсивно находит указанные файлы в папках и подпапках и преобразует/обрабатывает их.
а можно ли с помощью AutoIt интерпретировать данный скрипт:
- зашив в один exe все используемые файлы/инструменты/dll
- сделать прогресс бар для процесса
?
Примечания:
в самом окне исполнения возможно сделать:
- кнопки старт, отмена, пауза
- галки для перезаписи файлов и удаления исходных файлов, т.е те что "%%a"
?




  Записан

madmasles [?]

  • Модератор
  • *
  • *****
  • Репутация: 1426
  • Online Online
  • Пол: Мужской
  • Сообщений: 3819
  • Версия AutoIt: 3.3.6.1 - 3.3.9.4
    • Награды
Tosyk,
Не помню, что делает %%~dpna_decompressed.tga.
Был, например, 12345.tga, а стал?

Tosyk [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 0
  • Offline Offline
  • Сообщений: 47
  • Версия AutoIt: 3.3.6.1
    • Награды
Й
« Ответ #2, Отправлен: Сентябрь 03, 2011, 16:13:45 »
Я подробно распишу что требуется :)

хотелось бы узннать как возможно сделать два режима конечной утилиты:
ПЕРВЫЙ - программа запускается двумя кликами и преоразует все файлы вглубь по каталогам
ВТОРОЙ - на exe программы перетягиваются выбранный файлы и программа преобразует только их

в ПЕРВОМ режиме:

1 - запуск программы двойным кликом
2 - программа начинает искать определённый тип файлов (*.tga, *_mge.vpn и т.д.)
for /f "tokens=*" %%a in ('dir /b /s *.tga') do (3 - после нахождения файлов в папке с найденным файлом создаётся временная папка (допустим _temp)
md _temp4 - программа преобразует файлы с помощью утилиты tool1.exe c параметрами:
      tool1.exe "ФАЙЛ.tga"
     после преобразования получаем файл ФАЙЛ_decompressed.tga
tool1.exe "%%a"5 - программа преобразует каждый полученный ФАЙЛ_decompressed.tga с помощью утилиты tool2.exe с параметрами:
      tool2.exe "ФАЙЛ_decompressed.tga" "ФАЙЛ.png"
     после преобразования получаем файл ФАЙЛ.png
tool2.exe "%%~dpna_decompressed.tga" "%%~dpna.png"6 - исходный "ФАЙЛ.tga" перемещается в папку _temp (хотя это можно сделать после п.4)
move "%%a" .\_temp7 - промежуточный ФАЙЛ_decompressed.tga удаляется (но это можно сделать после п.5)
del "%%~dpna_decompressed.tga"
во ВТОРОМ режиме:

1 - выбранные файлы перетягиваются на exe с программой
2 - в папке с перетянутым на программу файлом создаётся временная папка (допустим _temp)
3 - далее как в ПЕРВОМ режиме с п.4

ВТОРОЙ режим более интресен, т.к. хочу сделать контекстное меню в панели виндовс для быстрого доступа




  Записан

madmasles [?]

  • Модератор
  • *
  • *****
  • Репутация: 1426
  • Online Online
  • Пол: Мужской
  • Сообщений: 3819
  • Версия AutoIt: 3.3.6.1 - 3.3.9.4
    • Награды
Tosyk,
Попробуйте так, во втором режиме (надо перетаскивать файл(файлы) только на скомпилированный скрипт или его ярлык). В файле Mask.ini можно задать маски.
Утилиты tool1.exe и tool2.exe должны быть в папке со скриптом.
Код: AutoIt [Выделить]
#NoTrayIcon

If Not @Compiled Then Exit

If WinExists(@ScriptName & '{[/@$@\]}') Then Exit
AutoItWinSetTitle(@ScriptName & '{[/@$@\]}')

If Not $CmdLine[0] Then Exit
_Check_ScriptDir()
$aFiles = _Get_Files()
If @error Then Exit
_Decompress($aFiles)

Func _Decompress($a_File)
    Local $s_Tool_1 = '"' & @ScriptDir & '\tool1.exe" ', $s_Tool_2 = '"' & @ScriptDir & '\tool2.exe" ', _
            $s_TempDir = @ScriptDir & '\_Temp\'
    For $i = 1 To $a_File[0][0]
        RunWait($s_Tool_1 & '"' & $a_File[$i][0] & '"', '', @SW_HIDE);можно Run() и читать консольный вывод
        FileMove($a_File[$i][0], $s_TempDir, 9)
        If FileExists($a_File[$i][1]) Then
            RunWait($s_Tool_2 & '"' & $a_File[$i][1] & '" "' & $a_File[$i][2] & '"', '', @SW_HIDE);можно Run() и читать консольный вывод
            FileDelete($a_File[$i][1])
        EndIf
    Next
EndFunc   ;==>_Decompress

Func _Get_Files()
    Local $s_File_INI = @ScriptDir & '\Mask.ini', $s_Section = 'Mask', _
            $a_Temp, $a_Mask[2] = [1, '.tga'], $a_Return_Array, $i_Count, _
            $s_Prefix = '_decompressed', $s_Temp

    $a_Temp = IniReadSection($s_File_INI, $s_Section)
    If Not @error Then
        ReDim $a_Mask[$a_Temp[0][0] + 1]
        $a_Mask[0] = $a_Temp[0][0]
        For $i = 1 To $a_Temp[0][0]
            $a_Mask[$i] = $a_Temp[$i][1]
        Next
    EndIf
    Dim $a_Return_Array[$CmdLine[0] + 1][3]
    For $i = 1 To $CmdLine[0]
        For $j = 1 To $a_Mask[0]
            If Not FileExists($CmdLine[$i]) Then ContinueLoop
            If StringInStr(FileGetAttrib($CmdLine[$i]), 'D') Then ContinueLoop
            If StringRight($CmdLine[$i], StringLen($a_Mask[$j])) == $a_Mask[$j] Then
                $i_Count += 1
                $a_Return_Array[$i_Count][0] = $CmdLine[$i]
                $s_Temp = StringRegExpReplace($CmdLine[$i], '\.[^.]*$', '')
                $a_Return_Array[$i_Count][1] = $s_Temp & $s_Prefix & $a_Mask[$j]
                $a_Return_Array[$i_Count][2] = $s_Temp & '.png'
            EndIf
        Next
    Next
    If $i_Count Then
        ReDim $a_Return_Array[$i_Count + 1][3]
        $a_Return_Array[0][0] = $i_Count
        Return $a_Return_Array
    EndIf
    Return SetError(1)
EndFunc   ;==>_Get_Files

Func _Check_ScriptDir()
    Local $s_Tool_1 = @ScriptDir & '\tool1.exe', $s_Tool_2 = @ScriptDir & '\tool2.exe'
    If Not FileExists($s_Tool_1) Then Exit
    If Not FileExists($s_Tool_2) Then Exit
EndFunc   ;==>_Check_ScriptDir
Пример файла Mask.ini:[Mask]
1=.tga
2=_mge.vpn
Если этого файла нет, то будет обрабатывать файлы по маске *.tga.
Может быть ошибка при обработке по маске _mge.vpn. Как он переименовывается при распаковке tool1.exe?
« Последнее редактирование: Сентябрь 04, 2011, 06:09:00 от madmasles »



  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
Поиск файлов на диске
Полезняшки
Yashied 7 3186 Последний ответ Ноябрь 11, 2010, 15:38:10
от alexnasa
[Файловая система] Поиск файлов на HDD
AutoIt для новичков
Dealer 2 1528 Последний ответ Февраль 26, 2010, 19:24:04
от CreatoR
[Автоматизация] Поиск по раширению и копирование найденных файлов
AutoIt для новичков
zbz 3 826 Последний ответ Октябрь 31, 2010, 14:10:12
от gregaz
Поиск и копирование файлов
AutoIt для новичков
Ed_Vard 4 816 Последний ответ Декабрь 18, 2010, 12:57:30
от Ed_Vard
Поиск reg файлов и внесение их в реестр
AutoIt для новичков
prokazzza 2 854 Последний ответ Март 28, 2011, 02:38:01
от VladUs
Поиск и удаление файлов
AutoIt для новичков
prokazzza 9 927 Последний ответ Апрель 07, 2011, 08:22:14
от prokazzza
[Автоматизация] Преобразование таблиц из псевдографики в word таблицы
Общение
Vlasssov 0 526 Последний ответ Ноябрь 17, 2011, 14:31:38
от Vlasssov
[Автоматизация] преобразование файлов с параметрами
AutoIt для новичков
Tosyk 52 2314 Последний ответ Январь 24, 2012, 09:13:48
от Tosyk
[Автоматизация] Комплексное преобразование файлов, двумя программами последовательно
AutoIt для новичков
Tosyk 12 754 Последний ответ Январь 29, 2012, 10:17:30
от Tosyk
Рекурсивный поиск тега по названию класса
Автоматизация IE и Web-интерфейса
kzru_hunter 7 433 Последний ответ Февраль 23, 2012, 18:11:00
от C2H5OH


Реклама

* Последние сообщения на форуме
post Re: Смена IP адресса
[AutoIt для новичков] Zaramot Сегодня в 13:04:33
post Re: Авторизация в одноклассниках
[Автоматизация IE и Web-интерфейса] Александр Сегодня в 12:59:21
post Re: Выполнение скрипта при нажатии средней кнопки мыши
[AutoIt для новичков] madmasles Сегодня в 12:23:31
post [Мышь, клавиатура] Re: Выполнение скрипта при нажатии средней кнопки мыши
[AutoIt для новичков] Nurgazy Сегодня в 12:09:36
post Re: Объясните плз, как работать с массивами ArrayAdd и прочее...
[AutoIt для новичков] madmasles Сегодня в 12:08:03
post Объясните плз, как работать с массивами ArrayAdd и прочее...
[AutoIt для новичков] webmonster Сегодня в 12:03:38
post Re: Как заменить метку времени файла на севере
[Автоматизация IE и Web-интерфейса] ---Zak--- Сегодня в 11:39:56
post Как заменить метку времени файла на севере
[Автоматизация IE и Web-интерфейса] eropov Сегодня в 11:26:37
post Re: Выполнение скрипта при нажатии средней кнопки мыши
[AutoIt для новичков] madmasles Сегодня в 11:13:16
post [Мышь, клавиатура] Re: Выполнение скрипта при нажатии средней кнопки мыши
[AutoIt для новичков] Nurgazy Сегодня в 10:56:29

* Пользователи онлайн
  • Dot Гостей: 135
  • Dot Скрыт: 2
  • Dot Пользователей: 29
  • Dot Пользователи Online: