Come eseguo i comandi di Windows tramite Autoit?


4

Si tratta di sc.exe

Voglio eseguire il mio programma come servizio in Windows. Posso farlo usando il prompt dei comandi

Il mio programma è inserito nella system32cartella, quindi prima vado in system32e poi uso questi comandi

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"

dopo aver eseguito questi comandi, quando riavvio il mio PC, il mio programma inizia a funzionare come un servizio che va bene.

Ora, voglio fare uno script autoit che eseguirà questi comandi ma non riesca a capire come lo faccio.

Ci ho provato

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

Il primo comando viene eseguito correttamente, ma il secondo comando no.


La cartella system32 è %PATH%attiva per impostazione predefinita e non è necessario cdinserirla per eseguire i comandi
phuclv,

Risposte:


1

Come eseguire i comandi cmd tramite AutoIT

È possibile utilizzare la funzione Esegui AutoIT per eseguire \ eseguire un programma esterno con la funzione Esegui e di seguito è riportato un esempio con la logica fornita.

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

Il problema che probabilmente stai riscontrando nel far eseguire il secondo comando come previsto con la funzione _RunCMD Snippet è dovuto alle doppie virgolette utilizzate intorno e anche all'interno del valore della variabile impostata .

Ecco un esempio dell'uso delle virgolette singole attorno al valore della variabile anziché alle doppie virgolette poiché il valore effettivo della variabile contiene virgolette doppie.

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

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


0

Dai un'occhiata a ComSpec https://www.autoitscript.com/wiki/Snippets_%28_CMD_%29

La sintassi è un po 'complicata a causa della fuga dei personaggi a volte, ma è possibile farlo.

Potresti anche scoprire che puoi sostituire alcune righe di comando con funzioni integrate in AutoIT


Si prega di citare le parti essenziali della risposta dai collegamenti di riferimento, in quanto la risposta può diventare non valida se le pagine collegate cambiano.
DavidPostill

0

I comandi CMD vengono eseguiti al meglio da un file batch di Windows, se si imposta il file batch per l'esecuzione all'avvio con i comandi in un file batch, dovrebbe funzionare correttamente.

  • Se stai eseguendo Windows 7 nel menu di avvio c'è una cartella chiamata "start up" trascina il file batch con i tuoi comandi in questa cartella, quindi all'avvio di Windows lo fa e eseguirà i comandi.
  • Se si esegue Windows 8 o 8.1, il percorso del file è: C: \ Users (il tuo utente) \ AppData \ Roaming \ Microsoft \ Windows \ Menu Start \ Programmi \ Avvio

Una volta che il file batch si trova nella cartella all'avvio, esegue i comandi.

Formato per il file batch:

@echo off
(your command)
(your command)
exit

Buona fortuna, se non funziona, gioca con la cartella di avvio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.