Как выполнить команды Windows через autoit?
Это про sc.exe
Я хочу запустить свою программу как службу в Windows. Я могу сделать это с помощью командной строки
Моя программа размещена в system32
папку, поэтому сначала я иду в system32
а потом я использую эти команды
c:\windows\system32>sc create demo binpath= "pg.exe" type= own start= auto DisplayName= "autostart"
c:\windows\system32>sc config demo binpath= "cmd.exe /c c:\windows\system32>pg.exe" type= own start= auto DisplayName= "autostart"
после выполнения этих команд, когда я перезагружаю компьютер, моя программа запускается как служба, и это нормально.
Теперь я хочу сделать скрипт autoit, который будет выполнять эти команды, но не в состоянии понять, как я это делаю.
Я пробовал это
#include <RunCMD.au3>
$cmd = "sc create demo1 binpath= c:\pg.exe type= own start= auto"
_RunCMD($cmd)
$cmd = "sc config demo1 binpath= "cmd.exe /c c:\pg.exe" type= own start= auto"
_RunCMD($cmd)
Первая команда выполняется успешно, а вторая - нет.
3 ответа
Как выполнять команды cmd через AutoIT
Вы можете использовать функцию AutoIT Run для запуска \ запуска внешней программы с помощью функции Run, и ниже приведен пример с предоставленной вами логикой.
#RequireAdmin
Run('sc create demo1 binpath= c:\pg.exe type= own start= auto')
Run('sc config demo1 binpath= "cmd.exe /c c:\pg.exe" type= own start= auto')
Проблема, с которой вы, вероятно, сталкиваетесь при запуске второй команды, как ожидается, с функцией Snippet _RunCMD, связана с использованием двойных кавычек, а также в пределах значения устанавливаемой переменной.
Вот пример использования одинарных кавычек вокруг значения переменной, а не двойных кавычек, поскольку фактическое значение переменной содержит двойные кавычки.
$cmd = 'sc config demo1 binpath= "cmd.exe /c c:\pg.exe" type= own start= auto'
Команды CMD лучше всего выполнять из командного файла Windows, если вы настроите запуск командного файла при запуске с командами в командном файле, он должен работать нормально.
- Если на вашем рабочем столе Windows 7 в меню "Пуск" есть папка "Пуск", перетащите командный файл с вашими командами в эту папку, затем, когда Windows запустится, она сделает это и выполнит команды.
- Если вы используете Windows 8 или 8.1, путь к файлу: C:\Users(ваш пользователь)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Когда пакетный файл находится в папке при запуске, он запускает выполнение ваших команд.
Формат для пакетного файла:
@echo off
(your command)
(your command)
exit
Желаем удачи, если это не сработает, поиграйте с папкой автозагрузки.
Посмотрите на ComSpec https://www.autoitscript.com/wiki/Snippets_%28_CMD_%29
Синтаксис немного хитрый из-за escape-символов, но это возможно.
Вы также можете обнаружить, что вы можете заменить некоторые командные строки встроенными функциями в AutoIT