Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] $CmdLine[0,1,2,3], $CmdLineRaw... как этим пользоваться.

Ответить
Настройки темы
[решено] $CmdLine[0,1,2,3], $CmdLineRaw... как этим пользоваться.

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Изменения
Автор: semiono
Дата: 20-08-2010
Не понимаю как написать скрипт. Лучше я свой батник покажу, что мне надо зделать в autoit3 варианте.

..\system32\Cubase.cmd:
Код: Выделить весь код
@if "%1"=="r" regedit.exe & goto sh
@if "%1"=="t" taskmgr.exe & goto sh
@if "%1"=="s" shutdown -r -f -t 00 & goto sh
@if "%1"=="x" shutdown -s -f -t 00 & goto sh
@if "%1"=="p" VSTPluginsPath.exe & goto sh
@start "" "C:\I\Apps\Cubase\Cubase.exe" %*
:sh
If $cmdline[0] = r Then... так что ли? Впринципе до меня только одно дошло, то что *.* это $CmdLineRaw.

Наверное после каждого Then будет свой ShellExecute... громозко как-то получится?
Вообщем, подскажите, пожалуйста?

---
Вот попытался набросок зделать, глючит немнжко
Код: Выделить весь код
If $CmdLine[0]="r" Then
	ShellExecute("regedit.exe")
ElseIf $CmdLine[1]="t" Then
	ShellExecute("taskmgr.exe")
Else
	ShellExecute(@ProgramFilesDir & "\Cubase\Cubase.exe", $CmdLineRaw)
EndIf
вариант два, ещё хуже стало )))
Код: Выделить весь код
#Include <Array.au3>

If $CmdLine[0]="r" Then
	ShellExecute("regedit.exe")
ElseIf $CmdLine[1]="t" Then
	ShellExecute("taskmgr.exe")
ElseIf $CmdLineRaw Then
	ShellExecute(@ProgramFilesDir & "\Cubase\Cubase.exe", $CmdLineRaw)
Else
	ShellExecute(@ProgramFilesDir & "\Cubase\Cubase.exe")
EndIf

-------
Полезное сообщение


Отправлено: 17:19, 20-08-2010

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
Select
	Case $CmdLine[0]=1 And $CmdLine[1]="r"
		Run("regedit.exe", @WindowsDir)
	Case $CmdLine[0]=1 And $CmdLine[1]="t"
		Run("taskmgr.exe", @SystemDir)
	Case $CmdLine[0]=1 And $CmdLine[1]="s"
		Run("shutdown -r -f -t 0", @SystemDir)
	Case $CmdLine[0]=1 And $CmdLine[1]="x"
		Run("shutdown -s -f -t 0", @SystemDir)
	Case $CmdLine[0]=1 And $CmdLine[1]="p"
		Run("VSTPluginsPath.exe")
	Case Else
		Run("C:\I\Apps\Cubase\Cubase.exe "& $CmdLineRaw)
EndSelect
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:59, 20-08-2010 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Или так:

Код: Выделить весь код
If $CmdLine[0] = 0 Then Exit

Switch $CmdLine[1]
    Case "r"
        Run("regedit.exe", @WindowsDir)
    Case "t"
        Run("taskmgr.exe", @SystemDir)
    Case "s"
        Run("shutdown -r -f -t 0", @SystemDir)
    Case "x"
        Run("shutdown -s -f -t 0", @SystemDir)
    Case "p"
        Run("VSTPluginsPath.exe")
    Case Else
        Run("C:\I\Apps\Cubase\Cubase.exe "& $CmdLineRaw)
EndSwitch

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:20, 20-08-2010 | #3


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


semiono,
$CmdLine[0] возвращает количество параметров. Честно говоря, я сам с ними долго разбирался. Попробуйте создать 2 скрипта. 1-ый:
Код: Выделить весь код
#include <Constants.au3>

$mod = Run(@AutoItExe & ' /AutoIt3ExecuteScript Test.au3 Первый_параметр Второй_параметр Третий_параметр', @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
$sLog = ''
While 1
    $sLog &= StdoutRead($mod)
    If @error Then ExitLoop
    Sleep(2)
WEnd
MsgBox(0, '', $sLog)
2-ой (назовите его Test.au3 и положите в ту же папку, где лежит 1-ый):
Код: Выделить весь код
If Not $CmdLine[0] Then
    ConsoleWrite('Нет параметров' & @LF)
    Exit
EndIf
For $i = 1 To $CmdLine[0]
    ConsoleWrite($CmdLine[$i] & @LF)
    Sleep(100)
Next
ConsoleWrite(@LF & 'Все!' & @LF)
Теперь запускайте 1-ый скрипт и меняйте параметры. Я сам с этим игрался, чтобы разобраться. Кстати, если скомпилировать первый скрипт, то он будет запускать второй и на компьютере с неустановленным AutoIt`oм.

PS
Кажется, Yashied приводил примерно такой пример на autoit-script.ru, лень искать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:21, 20-08-2010 | #4


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Очень изящные красивые примеры! Их хоть прямо в справку записывай, отлично!
amel27, Creat0R, madmasles, благодарю!

-------
Полезное сообщение


Отправлено: 18:25, 20-08-2010 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Ещё по теме: _CmdLineSetEvent - Обработчик командной строки

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:26, 20-08-2010 | #6


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Всётаки эта тема безконечная.
Запускаю консольное приложение, ISCC.exe - кампилятор Inno Setup.
Задача просто передать ему управление.
Вот батник который работает:
\system32\ISCC.cmd
Код: Выделить весь код
@"C:\I\Apps\Innosup\ISCC.exe" %*

Я уже все варианты перебрал наугад, в лучшм случае выдаёт справку, но на вход комманды не хочет воспринимать.
Код: Выделить весь код
#Include <Constants.au3>

Run(@ProgramFilesDir & "\Innosup\ISCC.exe ", $CmdLineRaw, ".", $STDERR_CHILD & $STDIN_CHILD  & $STDOUT_CHILD)
Кампилю как "Create CUI instead of GUI.EXE", хотя может быть не надо?

Смысл флагов $STDIN_CHILD не очень понятен, но где-то что-то я улавливаю приблизительно. ))

-------
Полезное сообщение


Отправлено: 23:32, 20-08-2010 | #7


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата semiono:
уже все варианты перебрал наугад »
право, быстрей в справку глянуть:
Код: Выделить весь код
Run(@ProgramFilesDir &"\Innosup\ISCC.exe "& $CmdLineRaw, @ScriptDir, @SW_HIDE, $STDERR_CHILD + $STDIN_CHILD + $STDOUT_CHILD)
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:24, 21-08-2010 | #8


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


А вот так правильно?
Код: Выделить весь код
$pid = Run(@ProgramFilesDir & "\Innosup\ISCC.exe " & $CmdLineRaw, @WorkingDir, @SW_ENABLE, $STDIO_INHERIT_PARENT)
StdioClose($pid)
У меня не до конца прокрутка в консоли срабатывет, будто бы подвисает на одну строку.
Но работа ISCC.exe кампилятора выполняется.

-------
Полезное сообщение


Отправлено: 17:30, 21-08-2010 | #9


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Понял проблему!! Надо было RunWait() теперь не подвисает! Анологично батнику чётко работает.
Но что лучше $STDIO_INHERIT_PARENT или 0x1 + 0x2 ?? И надо ли закрывать процесс StdioClose($pid) ?

-------
Полезное сообщение


Отправлено: 18:16, 21-08-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] $CmdLine[0,1,2,3], $CmdLineRaw... как этим пользоваться.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
SysTreeView32 - как с этим работать? Firebolt AutoIt 20 13-10-2011 15:08
что это и как с этим бороться slava___sl Лечение систем от вредоносных программ 5 14-08-2009 22:38
EventID - Event ID: 27 Как с этим бороться??? KraSSotka Устранение критических ошибок Windows 0 22-10-2008 08:36
Драйвер - Загрузка и выгрузка dll через CMDline borison Microsoft Windows 2000/XP 2 29-02-2008 17:50
DRM: как с этим бороться? X-SAT Хочу все знать 6 12-02-2007 02:39




 
Переход