Как создать AutoHotKey, который запускает скрипт (например, .bat), используя аргументы командной строки Cmder?

Я пытаюсь создать автогорячую клавишу, которая запускает скрипт (т.е. .bat):

#!g::
  Run "Path\To\script\script.bat" debug
  Return

AutoHotKey работает правильно. Тем не менее, я хотел бы, чтобы .bat открывался с помощью Cmder вместо Windows cmd по умолчанию.

Я попытался установить Cmder в качестве командной команды по умолчанию, перейдя в Настройки-> Интеграция -> Термин по умолчанию и установив флажок "Использовать ConEmu в качестве терминала по умолчанию для консольных приложений", но в моем конкретном случае это ничего не изменило, и скрипт по-прежнему выполняется в Windows cmd.


person dj_frunza    schedule 25.09.2017    source источник


Ответы (2)


Предполагая, что Cmder может принимать параметр командной строки, сделайте его явным:

Run "Path\To\exe\Cmder.exe Path\To\script\script.bat" debug

В противном случае запустите Cmder, а затем используйте AHK, чтобы открыть файл сценария.

EDIT: на основе решения OP можно попробовать:

Run "Path\To\exe\Cmder.exe /Task ""Path\To\script\script.bat debug"""

or

Run "Path\To\exe\Cmder.exe /Start ""Path\To\script"" /Task ""script.bat debug"""

Точный синтаксис, а также то, следует ли и где заключать вещи в кавычки, еще не определены, но попробуйте и посмотрите.

person PGilm    schedule 26.09.2017
comment
Я только что попробовал это, и это не работает. Кажется, что Cmder может принимать параметр командной строки, но параметр командной строки интерпретируется как путь к папке, в которую Cmder изменит каталог. В любом случае, спасибо за предложение - person dj_frunza; 27.09.2017
comment
Я предполагаю, что cmder не поддерживает никаких параметров (кроме /Start, /Single и т. д.), поэтому вам придется забивать его с помощью bat-файла github.com/cmderdev/cmder/issues/370 или передать AHK имя файла для запуска в открытое окно cmder. - person PGilm; 27.09.2017
comment
Мне удалось это сделать, заставив AHK ввести script.bat и нажать Enter после открытия Cmder. - person dj_frunza; 28.09.2017
comment
@dj_frunza Я пытаюсь сделать то же самое, вы использовали Sent или ControlSend? Я не могу заставить ControlSend работать с cmder - person Jon Cahill; 31.05.2019
comment
Я использовал отправить. Пожалуйста, проверьте мой ответ, чтобы увидеть, как это сработало для меня! - person dj_frunza; 31.05.2019

В конце концов, я использовал приведенный ниже скрипт, чтобы заставить его работать:

; Win+Alt+y - Start script
#!y::
Run "d:\cmder\Cmder.exe" "d:\somePath\FolderContainingTheBat\"
sleep 1000
send script.bat debug{enter}

Return

ИЗМЕНИТЬ

Другое решение для этого не использует AutoHotKey и работает только с Windows cmd по умолчанию. Я сделал следующее:

  1. Создайте файл .bat, который содержит следующее

    script.bat debug
    
  2. Создайте ярлык для вновь созданного bat-файла и назначьте ему «сочетание клавиш»: щелкните правой кнопкой мыши на созданном ярлыке -> Свойства -> вкладка «Ярлык» -> Клавиша быстрого доступа
person dj_frunza    schedule 31.05.2019
comment
Превосходно. Рад, что это работает. Но зачем так много спать? Может попробовать WinWait или WinWaitActive? В любом случае, пожалуйста, посмотрите мой первоначальный ответ для Edit, потому что могут быть некоторые аргументы командной строки, которые поддерживаются, и это может быть вопрос заключения параметров в кавычки (которые нужно в акк). - person PGilm; 31.05.2019
comment
Я пробовал с WinWait и WinWait Active, и это не сработало. Также я пробовал это с помощью «Пуск» и «Задача», но безуспешно. - person dj_frunza; 03.06.2019
comment
Спасибо, что сообщили мне. Рад, что вы нашли хорошее решение, хотя. - person PGilm; 03.06.2019