1 (изменено: serzh82saratov, 2012-05-28 12:42:24)

Тема: AHK: Как запустить скрипт только с параметром

Как запустить скомпилированный скрипт только с параметром командной строки windows?
Есть скрипт, нужно чтоб при попытке запуска из проводника ничего не происходило (не запускалось), а при запуске из батника с определённым параметром выполнялось заданное действие.

#SingleInstance force
#NoTrayIcon
; Поиск в параметрах ключей (модификаторов действий скрипта)
If 0 > 0 ; если параметры есть (см. Примечание 1 выше. Будет верным написать и так If %0% > 0), то...
{
    Loop, %0% ; обработать все переданные параметры
    {
        Param := %A_Index% ; получаем значение текущего параметра (см. Примечание 2 и 3)
        ; берем 1-й символ параметра (проверяем наличие ключа)
        StringLeft, Switch_Pointer, Param, 1
        ; если параметр начинается с "-" или с "/" (указатели на ключ), то...
        If ( Switch_Pointer = "-" OR Switch_Pointer = "/" )
        {
            ; берем остальную часть строки (получаем сам ключ)
            StringMid, Switch, Param, 2, StrLen( Param )
            ; (ВНИМАНИЕ: укажите здесь желаемое имя ключа) если ключ имеет нужное имя, то...
            If Switch = apple
                ; назначаем любую переменную, в которой будет указано, что параметр получен
                Switch1 := Switch
    }
}
 
; Обработка полученных ключей
If Switch1 ; если ключ был получен, то...
MsgBox, Скрипт запущен с ключом apple
Sleep, 1000
ExitApp

ExitApp

Сейчас он запускается из проводника, и выполняется действие

If Switch1 ; если ключ был получен, то...
MsgBox, Скрипт запущен с ключом apple
Sleep, 1000
ExitApp

Попробовал с 2 параметрами, ввёл второй параметр а выполняется почему-то первый. Подскажите ошибку.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

2

Re: AHK: Как запустить скрипт только с параметром

А где скрипт с 2-мя параметрами?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: serzh82saratov, 2012-05-28 13:03:22)

Re: AHK: Как запустить скрипт только с параметром

teadrinker пишет:

А где скрипт с 2-мя параметрами?

вот

#SingleInstance force
#NoTrayIcon
If ( param1 = "orange" AND param2 = "apple" )
; Поиск в параметрах ключей (модификаторов действий скрипта)
If 0 > 0 ; если параметры есть (см. Примечание 1 выше. Будет верным написать и так If %0% > 0), то...
{
    Loop, %0% ; обработать все переданные параметры
    {
        Param := %A_Index% ; получаем значение текущего параметра (см. Примечание 2 и 3)
        ; берем 1-й символ параметра (проверяем наличие ключа)
        StringLeft, Switch_Pointer, Param, 1
        ; если параметр начинается с "-" или с "/" (указатели на ключ), то...
        If ( Switch_Pointer = "-" OR Switch_Pointer = "/" )
        {
            ; берем остальную часть строки (получаем сам ключ)
            StringMid, Switch, Param, 2, StrLen( Param )
            ; (ВНИМАНИЕ: укажите здесь желаемое имя ключа) если ключ имеет нужное имя, то...
            If Switch = orange
                ; назначаем любую переменную, в которой будет указано, что параметр получен
                Switch1 := Switch
            If Switch = apple
                ; назначаем любую переменную, в которой будет указано, что параметр получен
                Switch2 := Switch
    
    }
}
 
; Обработка полученных ключей
If Switch1 ; если ключ был получен, то...
Gui, +ToolWindow
Gui, Show, x555 y555 h379 w480, Windows
Sleep, 1000
ExitApp
GuiClose:
ExitApp
If Switch2 ; если ключ был получен, то...
    MsgBox, Скрипт запущен с ключом Switch2 = "%Switch2%"
Sleep, 1000
ExitApp

скрипт взят из справки http://www.script-coding.com/AutoHotkey/AhkParams.html если в двух действиях писать MsgBox то ничего не происходит, в том числе и с запуском с параметром. И почему-то ругается на одну из } поэтому она удалена.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Как запустить скрипт только с параметром

Предыдущий код правильно будет выглядеть так:

#SingleInstance force
#NoTrayIcon
If ( param1 = "orange" AND param2 = "apple" )
; Поиск в параметрах ключей (модификаторов действий скрипта)
If 0 > 0 ; если параметры есть (см. Примечание 1 выше. Будет верным написать и так If %0% > 0), то...
{
    Loop, %0% ; обработать все переданные параметры
    {
        Param := %A_Index% ; получаем значение текущего параметра (см. Примечание 2 и 3)
        ; берем 1-й символ параметра (проверяем наличие ключа)
        StringLeft, Switch_Pointer, Param, 1
        ; если параметр начинается с "-" или с "/" (указатели на ключ), то...
        If ( Switch_Pointer = "-" OR Switch_Pointer = "/" )
        {
            ; берем остальную часть строки (получаем сам ключ)
            StringMid, Switch, Param, 2, StrLen( Param )
            ; (ВНИМАНИЕ: укажите здесь желаемое имя ключа) если ключ имеет нужное имя, то...
            If Switch = orange
                ; назначаем любую переменную, в которой будет указано, что параметр получен
                Switch1 := Switch
            If Switch = apple
                ; назначаем любую переменную, в которой будет указано, что параметр получен
                Switch2 := Switch
         }
    }
}
 
; Обработка полученных ключей
If Switch1 ; если ключ был получен, то...
{
   Gui, +ToolWindow
   Gui, Show, x555 y555 h379 w480, Windows
}

If Switch2 ; если ключ был получен, то...
    MsgBox, Скрипт запущен с ключом Switch2 = "%Switch2%"
    
Sleep, 1000
ExitApp

GuiClose:
   ExitApp

Но здесь не предусмотрено наличие второго параметра, а определяется, чему равен первый — "orange" или "apple". В первом случае будет показано окно GUI, во втором — MsgBox.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: serzh82saratov, 2012-05-28 14:18:23)

Re: AHK: Как запустить скрипт только с параметром

Спасибо за помощь!
но теперь вообще не запускается никак, ни с проводника ни с параметрами.
батник

@echo off
"D:\AutoIt\Osd\WinWin.exe" /apple
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: Как запустить скрипт только с параметром

Попала строчка лишняя:

If ( param1 = "orange" AND param2 = "apple" )

её надо удалить.

#SingleInstance force
#NoTrayIcon
; Поиск в параметрах ключей (модификаторов действий скрипта)
If 0 > 0 ; если параметры есть (см. Примечание 1 выше. Будет верным написать и так If %0% > 0), то...
{
    Loop, %0% ; обработать все переданные параметры
    {
        Param := %A_Index% ; получаем значение текущего параметра (см. Примечание 2 и 3)
        ; берем 1-й символ параметра (проверяем наличие ключа)
        StringLeft, Switch_Pointer, Param, 1
        ; если параметр начинается с "-" или с "/" (указатели на ключ), то...
        If ( Switch_Pointer = "-" OR Switch_Pointer = "/" )
        {
            ; берем остальную часть строки (получаем сам ключ)
            StringMid, Switch, Param, 2, StrLen( Param )
            ; (ВНИМАНИЕ: укажите здесь желаемое имя ключа) если ключ имеет нужное имя, то...
            If Switch = orange
                ; назначаем любую переменную, в которой будет указано, что параметр получен
                Switch1 := Switch
            If Switch = apple
                ; назначаем любую переменную, в которой будет указано, что параметр получен
                Switch2 := Switch
         }
    }
}
 
; Обработка полученных ключей
If Switch1 ; если ключ был получен, то...
{
   Gui, +ToolWindow
   Gui, Show, x555 y555 h379 w480, Windows
}

If Switch2 ; если ключ был получен, то...
    MsgBox, Скрипт запущен с ключом Switch2 = "%Switch2%"
    
Sleep, 1000
ExitApp

GuiClose:
   ExitApp
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: serzh82saratov, 2012-05-28 14:46:07)

Re: AHK: Как запустить скрипт только с параметром

Класс!!! Всё работает, при запуске из проводника ничего не происходит, но при запуске из сторонней программы без параметров, почему-то через раз появляется это http://ic.pics.livejournal.com/the_best … iginal.jpg (что не является окном из скрипта), можно-ли это лечить?


А всё, удалил

GuiClose:
   ExitApp

и пропало
Большое  спасибо за помощь!!!

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: Как запустить скрипт только с параметром

По поводу параметров переданных скрипту:

args := []
Loop %0%
    args[A_Index] := %A_Index%

Добавив эти строки в секцию автовыполнения получим при запуске скрипта массив args содержащий переданные параметры в соответствующих «ячейках» массива. Количество переданных параметров возможно получить выполнив args.MaxIndex(), сами параметры находятся в args[1], args[2] и т.д.

9 (изменено: serzh82saratov, 2012-05-28 15:38:33)

Re: AHK: Как запустить скрипт только с параметром

creature.ws пишет:

Добавив эти строки в секцию автовыполнения получим при запуске скрипта массив args содержащий переданные параметры в соответствующих «ячейках» массива. Количество переданных параметров возможно получить выполнив args.MaxIndex(), сами параметры находятся в args[1], args[2] и т.д.

А можно готовый скрипт для чайника?
А то больше на С# похоже

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: Как запустить скрипт только с параметром

args := []
Loop %0%
    args[A_Index] := %A_Index%

If args.MaxIndex() > 0
    MsgBox % "Скрипт запущен с количеством аргументов больше нуля. `n3-й параметр: " args[3]
Else {
    MsgBox Скрипт был запущен без указания аргументов.
    Run %A_ScriptFullPath% param1 param2 param3
}

Адаптируйте

11 (изменено: serzh82saratov, 2012-05-28 18:52:44)

Re: AHK: Как запустить скрипт только с параметром

creature.ws

краткость, сестра таланта
а для нескольких параметров , мона такое сделать?

#NoTrayIcon
#SingleInstance ignore
args := []
Loop %0%
    args[A_Index] := %A_Index%
If args.MaxIndex() > 0
   Gui, +ToolWindow
   Gui, Show, x5555 y5555 h379 w480, Windows
   Sleep, 100
   ExitApp
Else 
{
    ExitApp
}

так почему-то на Else ругается?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Как запустить скрипт только с параметром

Встречный вопрос: почему вы ExitApp заключили в фигурные скобки, а блок выполняющийся при истинности условия If — нет?

13

Re: AHK: Как запустить скрипт только с параметром

creature.ws пишет:

Встречный вопрос: почему вы ExitApp заключили в фигурные скобки, а блок выполняющийся при истинности условия If — нет?

Не знаю
Всё работает , спасибо!

А можно сделать более простой скрипт, для нескольких конкретных параметров?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14 (изменено: serzh82saratov, 2012-07-24 23:14:22)

Re: AHK: Как запустить скрипт только с параметром

Для одного любого параметра, или его отсутствия

if 0 = 0
{
MsgBox нет параметров
ExitApp
}
Else 
MsgBox есть параметр
ExitApp

Встроенная Переменная %0% содержит количество переданных параметров

Для определённого первого  параметра

if 1 = orange
{
MsgBox есть параметр orange
ExitApp
}
Else 
if 1 = apple
{
MsgBox есть параметр apple
ExitApp
}
Else
MsgBox нет параметров orange или apple
ExitApp

Встроенная Переменная %1% содержит первый параметр

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui