Войти

Показать полную графическую версию : [решено] Вызов Run() с параметрами


evg64
25-10-2009, 10:49
Добрый день! Читал справку про вызов Run() с разными параметрами. К примеру, можно так: Run('AutoIt3.exe myscript.au3'). А как узнать, какие параметры еще можно вводить?
К тому же, как можно создать свой скрипт со своими параметрами? Например, чтобы параметр присваивался переменной в вызванном через Run скрипте:

Скрипт 1, имя myscript.au3
msgbox(0,0,$Param)

Скрипт 2
Run('AutoIt3.exe myscript.au3 $Param1')
Что нужно дописать в скрипт 1, чтобы там в мсгбоксе показывался параметр ($Param1), введенный во втором скрипте?

kaster
25-10-2009, 11:35
Help -> Command line parameters

Medic84
25-10-2009, 13:46
1 скрипт:
MsgBox(0,"Проверка", $Cmdline[1])

2 скрипт:
Run('myscript.exe "Параметр"')
;или
Run('AutoIt3.exe myscript.au3 "Параметр"')

Причем: 1.Параметр - в этом случае должен быть в кавчках!
2. $Cmdline[0] - содержит количество параметров
$Cmdline[1] - параметр - название переменной менять нельзя

evg64
25-10-2009, 17:50
Help -> Command line parameters »
В смысле это http://www.autoitscript.com/autoit3/docs/intro/running.htm#CommandLine ? Я там был.

evg64
21-11-2009, 20:14
Продолжение темы: когда указываешь путь к файлу, который запускать, как указывать пробелы? Если писать тупо " ", ф-цией Run это воспринимается как начало нового параметра. Пытаюсь засунуть файл с определенным путем в Rar архив.
$Cm="a D:\мои фильмы\(DivX)Jimy Hendrix-Live at Woodstock--GIO.avi"
Run("C:\Program Files\WinRAR\WinRAR.exe "&$Cm)
Вышеприведенный код не работает.
P.S. Буду благодарен, если кто-то объяснит, как через Run() архивировать с созданием томов по n байт каждый.

SyDr
21-11-2009, 20:29
Кавычки тебе нужны и при запуске архиватора из командной строки. Тебе просто нужно записать их на AutoIt.
При формировании строки ты можешь сделать это двумя способами:
1) Если строка находится в "", то одну двойную кавычку можно записать, как "" (две двойные). Пример "Это ""текст"" с кавычками"
2) Указывать строку в '' (две одинарные кавычки). 'Это "текст" с кавычками'.

Оба варианта равноправны.

evg64
22-11-2009, 00:36
Благодарю! Заработало! Сделал так:

$sWhatToPack="""D:\Мои фильмы\(DivX)Jimy Hendrix-Live at Woodstock--GIO.avi"""
$sDestinationPath="""D:\Мои фильмы\test.rar"""
$Cm="a "&$sDestinationPath&" "&$sWhatToPack
Run("C:\Program Files\WinRAR\WinRAR.exe "&$Cm)

Теперь надо понять, как создать многотомный архив каждый том по n байт. Лезу в хелп винрара:
Пример:

WinRAR a –v1200 –s –sfx bitmaps

В данном примере создается самораспаковывающийся непрерывный архив с томами размером 1 200 000 байт.

Исправляю 3-ю строку кода на
$Cm="a v1200 "&$sDestinationPath&" "&$sWhatToPack
Не получается. Пробую v1200 менять на ""v1200"", v""1200"" - все тщетно. Как же правильно оформить команду?

SyDr
22-11-2009, 10:40
Умм... Хорошо. Только у меня нет ВинРара. Покажу для 7-zip'а (Правда, благодаря ARJ у них у всех одинаковый формат командной строки). Почитал справку, понял, что интересуюющая меня строка выглядит так:
7z a -v1200k "D:\Video\жизнь с луи\7zipped\archive.zip" "D:\Video\жизнь с луи\05 Рыбка по имени Перец.avi"
На AutoIt я могу записать её, как:
'7z a -v1200k "D:\Video\жизнь с луи\7zipped\archive.zip" "D:\Video\жизнь с луи\05 Рыбка по имени Перец.avi"'

Но это не совсем правильно. Например, надо изменить имя архива или другие файлы добавить.
$sFileToPack = '"D:\Video\жизнь с луи\05 Рыбка по имени Перец.avi"'
$sDestination = '"D:\Video\жизнь с луи\7zipped\archive.zip"'
$sCMD = '7z a -v1200k ' & $sDestination & ' ' & $sFileToPack


Исправляю 3-ю строку кода на »
А куда - перед v дел?

evg64
22-11-2009, 13:04
Круто, заработало, спасибо! Кстати я пытался - ставить -, но тоже что-то делал не так и не получалось.

DesMono
12-05-2010, 19:23
Вроде и справку почитал и форум, но что-то не получается..
Товарищи знатоки, подскажи.

При таком запросе всё получается и работает, а как сделать через переменную?
Run ('7za.exe a -tzip -ssw -mx7 MyFolder.zip "C:\Documents and Settings\MyName\Application Data\MyFolder"', '', @SW_HIDE)

Пробовал так, но безуспешно. Создаётся лишь пустой архив, хотя через батник с этой переменной всё работает.
Run ('7za.exe a -tzip -ssw -mx7 MyFolder.zip "%AppData%\MyFolder"', '', @SW_HIDE)

В качестве пути не смог прикрутить.
@AppDataDir & "\MyFolder"

Creat0R
15-05-2010, 19:52
При таком запросе всё получается и работает, а как сделать через переменную? »
Это системная переменная, нужно либо расширять её при помощи Opt("ExpandVarStrings", 1), либо (предпочтительнее) использовать аналог в виде макроса:

Run('7za.exe a -tzip -ssw -mx7 MyFolder.zip "' & @AppDataDir & '\MyFolder"', '', @SW_HIDE)




© OSzone.net 2001-2012