如何通过 autoit 执行 Windows 命令?

如何通过 autoit 执行 Windows 命令?

这是关于 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"

执行这些命令后,当我重新启动电脑时,我的程序开始作为服务运行,这很好。

现在,我想制作一个可以执行这些命令的自动脚本,但无法理解我如何做到这一点。

我试过这个

#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)

第一个命令执行成功,但第二个命令没有执行。

答案1

如何通过 AutoIT 执行 cmd 命令

您可以使用自动运行执行\运行外部程序的函数跑步函数,下面是您提供的逻辑的一个示例。

#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')

您可能遇到的问题是让第二条命令按预期运行_RunCMD 函数代码片段是因为使用了双引号在所设置的变量值周围和范围内

这是一个使用单引号而不是双引号括住变量值的示例,因为变量的实际值包含双引号。

$cmd = 'sc config demo1 binpath= "cmd.exe /c c:\pg.exe" type= own start= auto'

在此处输入图片描述 在此处输入图片描述

答案2

看看 ComSpechttps://www.autoitscript.com/wiki/Snippets_%28_CMD_%29

由于有时需要转义字符,语法有点棘手,但这是可能的。

您可能还会发现,您可以使用 AutoIT 中的内置函数替换某些命令行

答案3

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

祝你好运,如果这不起作用,就尝试一下启动文件夹。

相关内容