Как выполнить команды 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

Другие вопросы по тегам