Войти

Показать полную графическую версию : [решено] Прогресс-бар для скрипта


Tosyk
21-09-2012, 15:56
Приветствую уважаемые.

Подскажите как интегрировать прогресс-бар в скрипт:

#Include <File.au3>

AutoItSetOption("MustDeclareVars", 1)

Local $i
Local $sSourceFile, $sDestFile
Local $sDrive, $sFolder, $sFileName, $sExt

Local $sPattern = "\.(?i:tga|jpg|bmp|dds|png|tif|jpeg)"


If $CmdLine[0] <> 0 Then
If FileInstall("convert.exe", @TempDir & "\", 1) = 1 Then
For $i = 1 To $CmdLine[0]
$sSourceFile = $CmdLine[$i]

If FileExists($sSourceFile) Then
_PathSplit($sSourceFile, $sDrive, $sFolder, $sFileName, $sExt)

If StringRegExp($sExt, "\A" & $sPattern & "\z", 0) = 1 Then
$sDestFile = _PathMake($sDrive, $sFolder, $sFileName, ".png")

RunWait("""" & @TempDir & "\convert.exe"" """ & $sSourceFile & """ -set colorspace RGB """ & $sDestFile & """", @TempDir, @SW_HIDE)
Else
ConsoleWriteError("Extension of file [" & $sSourceFile & "] is [" & $sExt & "] and not in [" & $sPattern & "]" & @CRLF)
EndIf
Else
ConsoleWriteError("File [" & $sSourceFile & "] not found" & @CRLF)
EndIf
Next

If FileExists(@TempDir & "\convert.exe") = 1 Then
FileDelete(@TempDir & "\convert.exe")
EndIf
Else
ConsoleWriteError("Can't extract [convert.exe] into [" & @TempDir & "]" & @CRLF)
EndIf
Else
MsgBox(0, "Usage", @ScriptName & " <file>")
ConsoleWrite("Usage: " & @ScriptName & " <file>" & @CRLF)
EndIf

Exit(0)

иногда бывает несколько тысяч файлов для конвертирования и хочется показать пользователю почему всё тупит

Iska
21-09-2012, 16:15
Tosyk, у Вас будет консольный или GUI-вариант исполняемого файла?

Tosyk
21-09-2012, 16:37
вообще что-то типа: кидаем на exe несколько файлов (или один) — открывается окошко с прогресс-баром, в котором помимо самого ползунка - бара под ним есть имя файла, который в данный момент конвертируется и цифры (ОСТАЛОСЬ/ВСЕГО), но это в идеале. Это только мои мысли, возможно этого всего реализовать не возможно.

Iska
21-09-2012, 16:56
Tosyk, это не ответ на заданный мною вопрос.

Tosyk
21-09-2012, 17:12
это не ответ на заданный мною вопрос. »прошу прощения, я подумал объяснение того чего я хочу будет достаточно.

Вообще конечно было бы круто объединить все функции в один UI: кидаем файлы на .exe и открывается окно, в котором ставим галки напротив функций (некоторые галки стоят по-умолчанию), которые нужно применить к группе файлам, а если у функций есть параметры то изменяем их.

но это из области фантастики конечно

Iska
21-09-2012, 22:19
я подумал объяснение того чего я хочу будет достаточно. »
И этот — тоже. Я умолкаю.

Tosyk
22-09-2012, 05:44
И этот — тоже. Я умолкаю. »значит ли это, что не поможете мне?

Iska
22-09-2012, 07:36
значит ли это, что не поможете мне? »
Да.

Косвенно можно составить представление, что подразумевалось GUI. Это ладно, но речь теперь заходит ещё и о некоем дополнительном интерфейсе, а это мне и вовсе не интересно, коллега.

Tosyk
22-09-2012, 14:37
по сабжу нужно было только это: кидаем на exe несколько файлов (или один) — открывается окошко с прогресс-баром, в котором помимо самого ползунка - бара под ним есть имя файла, который в данный момент конвертируется и цифры (ОСТАЛОСЬ/ВСЕГО) »и это всё

Iska
23-09-2012, 06:18
Tosyk, попробуйте так:
#Include <File.au3>

AutoItSetOption("MustDeclareVars", 1)

Local $i
Local $sSourceFile, $sDestFile
Local $sDrive, $sFolder, $sFileName, $sExt

Local $sPattern = "\.(?i:tga|jpg|bmp|dds|png|tif|jpeg)"


If $CmdLine[0] <> 0 Then
If FileInstall("convert.exe", @TempDir & "\", 1) = 1 Then
ProgressOn("Converting", "", "0%")

For $i = 1 To $CmdLine[0]
$sSourceFile = $CmdLine[$i]

ProgressSet(($i / $CmdLine[0]) * 100, $sSourceFile, String(Round($i / $CmdLine[0] * 100, 1)) & "%")

If FileExists($sSourceFile) Then
_PathSplit($sSourceFile, $sDrive, $sFolder, $sFileName, $sExt)

If StringRegExp($sExt, "\A" & $sPattern & "\z", 0) = 1 Then
$sDestFile = _PathMake($sDrive, $sFolder, $sFileName, ".png")

RunWait("""" & @TempDir & "\convert.exe"" """ & $sSourceFile & """ -set colorspace RGB """ & $sDestFile & """", @TempDir, @SW_HIDE)
Else
ConsoleWriteError("Extension of file [" & $sSourceFile & "] is [" & $sExt & "] and not in [" & $sPattern & "]" & @CRLF)
EndIf
Else
ConsoleWriteError("File [" & $sSourceFile & "] not found" & @CRLF)
EndIf
Next

ProgressSet(100 , "Converting complete", "100%")

If FileExists(@TempDir & "\convert.exe") = 1 Then
FileDelete(@TempDir & "\convert.exe")
EndIf

Sleep(1000)
ProgressOff()
Else
ConsoleWriteError("Can't extract [convert.exe] into [" & @TempDir & "]" & @CRLF)
EndIf
Else
MsgBox(0, "Usage", @ScriptName & " <file>")
ConsoleWrite("Usage: " & @ScriptName & " <file>" & @CRLF)
EndIf

Exit(0)

Tosyk
23-09-2012, 11:04
попробуйте так: »отлично работает, спасибо!




© OSzone.net 2001-2012