1

Тема: AHK: команда run - ошибка синтаксиса при передаче параметров

Здравствуйте!
Вот код на выключение компьютера, перенесённый из командной строки по правилам, описанным в документации:

run "%A_WinDir%\System32\shutdown.exe "-S" "-t" "0" "-c" ""Компьютер выключается"""

Вот оригинальный код из командной строки:

%windir%\System32\shutdown.exe -S -t 0 -c "Компьютер выключается"

Из командной строки всё работает - комп выключается. Из скрипта - нет. В чём проблема? Видимо, где-то всё же ошибся в синтаксисе. По правилам все параметры нужно заключать в кавычки, как и всю команду.
Я пробовал убирать кавычки вокруг "Компьютер выключается", т. к. этот параметр в оригинале уже стоит в кавычках - не помогло.
При запуске скрипта просто ничего не происходит.
P. S. %windir% я заменил на %A_WinDir%, т. к. у Autohotkey есть своя встроенная переменная для папки винды, а виндовая не распознаётся. Но проблема не в ней – я пробовал запускать отдельный скрипт

run "%A_WinDir%\System32"

– папка прекрасно открывается.

2

Re: AHK: команда run - ошибка синтаксиса при передаче параметров

На выключение есть встроенная команда.

Shutdown,13

https://www.autohotkey.com/docs/commands/Shutdown.htm

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

3

Re: AHK: команда run - ошибка синтаксиса при передаче параметров

Если вопрос по синтаксису, запускаете так же, как в командной строке, за исключением windir.

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

4

Re: AHK: команда run - ошибка синтаксиса при передаче параметров

teadrinker
А почему также? Вроде как параметры надо в кавычки?

5

Re: AHK: команда run - ошибка синтаксиса при передаче параметров

Alectric
Эта команда не полностью повторяет функционал командной строки. Свой текст задать нельзя, да и много чего нельзя. Но спасибо за инфу. Вариант.

6

Re: AHK: команда run - ошибка синтаксиса при передаче параметров

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

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

7

Re: AHK: команда run - ошибка синтаксиса при передаче параметров

Сработал в итоге вот такой вариант:

run %windir%\System32\shutdown.exe -S -t 0 -c "Компьютер выключается"

Но на экране выключения всё равно была стандартная фраза "Завершение работы", а не "Компьютер выключается". Но это уже не проблемы AHK – из командной строки то же самое.

teadrinker пишет:

за исключением windir.

Получилось, что даже windir остаётся как в оригинале. Т. е. полностью оригинальный код из cmd, просто предварённый словом run с пробелом.

8

Re: AHK: команда run - ошибка синтаксиса при передаче параметров

Если приложение находится в System32, вообще не нужно указывать полный путь, достаточно просто название без расширения:

Run shutdown /s /t 5 /c "Компьютер выключается"
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: команда run - ошибка синтаксиса при передаче параметров

teadrinker
Да, знаю про это. Просто так надёжнее, к тому же чуть быстрее. Хотя, тогда уж по этой логике и C:\Windows надо писать вместо %windir%
С комментарием я, кстати, разобрался. Этот комментарий отображается в журнале Винды (источник: User32, код события: 1074), а на синим экране стандартная фраза "Завершение работы" видимо где-то в другом месте меняется.
Всем спасибо, кстати, за помощь!

10

Re: AHK: команда run - ошибка синтаксиса при передаче параметров

А кстати, вопрос ещё остался. Равнозначна ли запись параметров через слэш и через минус? Вроде работает и так и так, но зачем вообще существуют два варианта? Они как-то по разному ведут себя в разных ситуациях? В каких и как?
Сейчас вызвал команду "shutdown /?" - там вообще про минус ничего нет, или я проглядел.

11

Re: AHK: команда run - ошибка синтаксиса при передаче параметров

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

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