这是关于 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
祝你好运,如果这不起作用,就尝试一下启动文件夹。