Tosyk
Новичок
- Сообщения
- 206
- Репутация
- 0
Приветствую,
Есть скрипт конвертирующий tga в png. Для того чтобы конвертировать tga нужно просто перетащить его на скрипт (я сделал из него exe) — рядом с tga появится png с таким же именем.
Я создал контекстное меню для tga с таким параметром:
"\"D:\\converting_textures\\Bin\\tga-to-png.exe\" \"%1\""
Конвертирование через контекстное меню работает!
Но как только я выбираю более 1 файла и конвертирую - для каждого файла открывается отдельная программа. Однако конвертер в png может обрабатывать любое количество tga файлов показывая полоску прогресса.
Вопрос простой: как сделать так чтобы все выделенные файлы через контекстное меню открывались бы в одной копии программы? Я кинул всё в Send To. Но хочется чтобы меню было только для определённых форматов. Такая специальная функция.
Есть скрипт конвертирующий tga в png. Для того чтобы конвертировать tga нужно просто перетащить его на скрипт (я сделал из него exe) — рядом с tga появится png с таким же именем.
Код:
#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, $sFileName & $sExt, 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 & """ -alpha on """ & $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)
Я создал контекстное меню для tga с таким параметром:
"\"D:\\converting_textures\\Bin\\tga-to-png.exe\" \"%1\""
Конвертирование через контекстное меню работает!
Но как только я выбираю более 1 файла и конвертирую - для каждого файла открывается отдельная программа. Однако конвертер в png может обрабатывать любое количество tga файлов показывая полоску прогресса.
Вопрос простой: как сделать так чтобы все выделенные файлы через контекстное меню открывались бы в одной копии программы? Я кинул всё в Send To. Но хочется чтобы меню было только для определённых форматов. Такая специальная функция.