Как выполнить команды Windows через autoit?

8168
user333908

Это про 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) 

Первая команда выполняется успешно, а вторая - нет.

4
Папка system32 по умолчанию находится в `% PATH%`, и вам не нужно в нее вставлять `cd` для запуска команд phuclv 5 лет назад 0

3 ответа на вопрос

1
Pimp Juice IT

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

0
Weirdest

Команды 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 

Желаем удачи, если это не сработает, поиграйте с папкой автозагрузки.

0
Codes

Have a look at ComSpec https://www.autoitscript.com/wiki/Snippets_%28_CMD_%29

The syntax is a bit tricky due to escape characters at times but it's possible to do.

You may also find that you can replace some command line with built in functions in AutoIT

Пожалуйста, процитируйте основные части ответа по ссылочной ссылке (ссылкам), так как ответ может стать недействительным, если связанные страницы изменятся. DavidPostill 8 лет назад 0

Похожие вопросы