|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Подставить переменную исходящего файла |
|
|
[решено] Подставить переменную исходящего файла
|
Старожил Сообщения: 166 |
Профиль | Отправить PM | Цитировать Есть скрипт. Компилируем, получаем .exe. При перетаскивании файла на этот .exe должна выполняться команда:
convert.exe 1.tga -set colorspace RGB 1.png где "-set colorspace RGB" — дополнительные параметры, а "1.tga" - входящий, "1.png" - выходящий файлы срипт: #NoTrayIcon $aFiles = _Get_Files() _Convert($aFiles) Func _Convert($a_Files) Local $s_nvdxt = 'convert.exe', $s_TempDir = @TempDir & '\_TempTex', $i_End, $s_File If Not FileExists($s_TempDir) Then If Not DirCreate($s_TempDir) Then Return SetError(1) EndIf If Not FileInstall('convert.exe', $s_nvdxt, 1) Then Return SetError(1) For $i = 1 To $a_Files[0] $i_End = RunWait('convert.exe' & $a_Files[$i] & '" -set colorspace RGB', '', @SW_HIDE) If $i_End Then Return SetError(1) ;FileMove($a_Files[$i], $s_TempDir, 1) Next ;FileDelete($s_TempDir & '\' & $s_nvdxt) ;DirRemove ($s_TempDir, 1) EndFunc ;==>_Convert Func _Get_Files() Local $aFiles[$CmdLine[0] + 1] = [$CmdLine[0]] For $i = 1 To $CmdLine[0] $aFiles[$i] = $CmdLine[$i] Next Return $aFiles EndFunc ;==>_Get_Files я не знаю как его указать, помогите пожалуйста p.s: хочу сделать контекстные меню для быстрого доступа для конвертирования группы изображений |
|
Отправлено: 05:34, 17-09-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Tosyk, воспользуйтесь функциями: _PathSplit для разбора имени файла на части и _PathMake для обратного слияния после замены расширения.
|
Отправлено: 06:43, 17-09-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать скрипт изначально не мой, для меня не совсем понятна природа некоторых элементов, поэтому для меня сложно сразу взять и использовать, в иной ситуации я бы наверное бы даже не спрашивал о помощи, но то, что вы показали очень даже имеет смысл, похоже на %1 в cmd. Получился такой скрипт:
#NoTrayIcon #include <File.au3> #include <Array.au3> $aFiles = _Get_Files() _Convert($aFiles) Func _Convert($a_Files) Local $szDrive, $szDir, $szFName, $szExt Local $PNGSplitPath = _PathSplit(@ScriptFullPath, $szDrive, $szDir, $szFName, $szExt) Local $PNGMakePath = _PathMake("c:", "\temp", "boot", "ini") Local $s_nvdxt = 'convert.exe', $s_TempDir = @TempDir & '\_TempTex', $i_End, $s_File If Not FileExists($s_TempDir) Then If Not DirCreate($s_TempDir) Then Return SetError(1) EndIf If Not FileInstall('convert.exe', $s_nvdxt, 1) Then Return SetError(1) For $i = 1 To $a_Files[0] $i_End = RunWait('convert.exe' & $a_Files[$i] & '" -set colorspace RGB' & $szDrive & $szDir & $szFName '.png', '', @SW_HIDE) If $i_End Then Return SetError(1) ;FileMove($a_Files[$i], $s_TempDir, 1) Next ;FileDelete($s_TempDir & '\' & $s_nvdxt) ;DirRemove ($s_TempDir, 1) EndFunc ;==>_Convert Func _Get_Files() Local $aFiles[$CmdLine[0] + 1] = [$CmdLine[0]] For $i = 1 To $CmdLine[0] $aFiles[$i] = $CmdLine[$i] Next Return $aFiles EndFunc ;==>_Get_Files объясните пожалуйста |
Отправлено: 07:46, 17-09-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Не разбирался с Вашим кодом.
Разбираете и собираете здесь: Local $PNGSplitPath = _PathSplit(@ScriptFullPath, $szDrive, $szDir, $szFName, $szExt) Local $PNGMakePath = _PathMake($szDrive, $szDir, $szFName, "png") подставляете переменную «$PNGMakePath» (и что-то у Вас тут с кавычками как-то не так). |
Отправлено: 08:34, 17-09-2012 | #4 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать хм, вроде всё понятно, должно работать, но не работает, странно.
взял за основу другой похожий свой скрипт, немного переделал, работает если не добавлять функции _PathSplit и _PathMake #NoTrayIcon $aFiles = _Get_Files() _Convert($aFiles) Func _Convert($a_Files) Local $PNGSplitPath = _PathSplit(@ScriptFullPath, $szDrive, $szDir, $szFName, $szExt) Local $PNGMakePath = _PathMake($szDrive, $szDir, $szFName, ".png") Local $s_nvdxt = 'convert.exe', $s_TempDir = @TempDir & '\_TempTex', $i_End If Not FileExists($s_TempDir) Then If Not DirCreate($s_TempDir) Then Return SetError(1) EndIf If Not FileInstall('convert.exe', $s_TempDir & '\' & $s_nvdxt, 1) Then Return SetError(1) For $i = 1 To $a_Files[0] $i_End = RunWait('"' & $s_TempDir & '\' & $s_nvdxt & '" "' & $a_Files[$i] '" -set colorspace RGB "' & $PNGMakePath & '"', '', @SW_HIDE) If $i_End Then Return SetError(1) ;FileMove($a_Files[$i], $s_TempDir, 1) Next FileDelete($s_TempDir & '\' & $s_nvdxt) DirRemove ($s_TempDir, 1) EndFunc ;==>_Convert Func _Get_Files() Local $aFiles[$CmdLine[0] + 1] = [$CmdLine[0]] For $i = 1 To $CmdLine[0] $aFiles[$i] = $CmdLine[$i] Next Return $aFiles EndFunc ;==>_Get_Files |
|
Последний раз редактировалось Tosyk, 17-09-2012 в 10:27. Отправлено: 09:59, 17-09-2012 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
#Include <File.au3> AutoItSetOption("MustDeclareVars", 1) Local $i Local $sSourceFile, $sDestFile Local $sDrive, $sFolder, $sFileName, $sExt Local $sPattern = "tga|jpg|bmp" 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 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) |
|
Отправлено: 05:29, 18-09-2012 | #6 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать Спасибо, но у меня ничего не конвертируется. попробуйте использовать convert.exe и пример
https://dl.dropbox.com/u/9919707/tem...ng_textures.7z Цитата Iska:
|
|
Отправлено: 08:14, 18-09-2012 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Tosyk:
Цитата Tosyk:
Я пропустил точку в шаблоне расширений. Попробуйте так: #Include <File.au3> AutoItSetOption("MustDeclareVars", 1) Local $i Local $sSourceFile, $sDestFile Local $sDrive, $sFolder, $sFileName, $sExt Local $sPattern = "\.(?i:tga|jpg|bmp)" 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) |
||
Отправлено: 09:12, 18-09-2012 | #8 |
Старожил Сообщения: 166
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:13, 18-09-2012 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:46, 18-09-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Чтение всего txt файла в переменную bat | binwatch@vk | Скриптовые языки администрирования Windows | 10 | 09-09-2012 18:57 | |
Любой язык - [решено] Скрипт использующий переменную из файла .txt | XXXp | Скриптовые языки администрирования Windows | 27 | 18-05-2011 21:34 | |
CMD/BAT - [решено] Чтение содержимого текстового файла в переменную | kosmopes | Скриптовые языки администрирования Windows | 2 | 11-03-2011 12:58 | |
CMD/BAT - [решено] Ввод данных в переменную из txt-файла | river123 | Скриптовые языки администрирования Windows | 1 | 10-01-2011 18:43 | |
CMD/BAT - [решено] Чтение строки из файла в переменную | Николя | Скриптовые языки администрирования Windows | 42 | 17-01-2010 19:42 |
|