Wie führe ich Windows-Befehle über autoit aus?

7677
user333908

Hier geht es um sc.exe

Ich möchte mein Programm als Dienst in Windows ausführen. Ich kann es mit der Eingabeaufforderung tun

Mein Programm befindet sich in einem system32Ordner, also gehe ich zuerst zu system32und verwende dann diese Befehle

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" 

Nach dem Ausführen dieser Befehle wird mein Programm nach dem Neustart als ein Dienst ausgeführt, der in Ordnung ist.

Jetzt möchte ich ein Autoit-Skript erstellen, das diese Befehle ausführt, aber nicht versteht, wie ich es mache.

Ich habe es versucht

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

Der erste Befehl wird erfolgreich ausgeführt, der zweite Befehl jedoch nicht.

4
Der system32-Ordner befindet sich standardmäßig in "% PATH%" und Sie müssen nicht mit "cd" dorthin gehen, um Befehle auszuführen phuclv vor 5 Jahren 0

3 Antworten auf die Frage

1
Pimp Juice IT

So führen Sie cmd-Befehle über AutoIT aus

Sie können die AutoIT Run- Funktion verwenden, um ein externes Programm mit der Run- Funktion auszuführen. Nachfolgend finden Sie ein Beispiel mit der von Ihnen bereitgestellten Logik.

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

Das Problem, das bei der Ausführung des zweiten Befehls mit der _RunCMD-Funktion "Snippet" erwartet wird, ist wahrscheinlich auf die doppelten Anführungszeichen zurückzuführen, die in der Umgebung verwendet werden, und auch innerhalb des Wertes der Variablen, die gesetzt wird .

Hier ein Beispiel für die Verwendung von einfachen Anführungszeichen um den Variablenwert und nicht in doppelte Anführungszeichen, da der tatsächliche Wert der Variablen doppelte Anführungszeichen enthält.

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

enter image description here enter image description here

0
Weirdest

CMD-Befehle werden am besten von einer Windows-Batchdatei aus ausgeführt. Wenn Sie die Batchdatei so einstellen, dass sie beim Starten mit den Befehlen in einer Batchdatei ausgeführt wird, sollte dies problemlos funktionieren.

  • Wenn Sie Windows 7 im Startmenü ausführen, befindet sich ein Ordner mit dem Namen "Start", ziehen Sie die Batchdatei mit Ihren Befehlen in diesen Ordner. Beim Starten von Windows werden die Befehle ausgeführt.
  • Wenn Sie Windows 8 oder 8.1 ausführen, lautet der Dateipfad: C: \ Benutzer (Ihr Benutzer) \ AppData \ Roaming \ Microsoft \ Windows \ Startmenü \ Programme \ Start

Sobald sich die Batch-Datei beim Start im Ordner befindet, werden Ihre Befehle ausgeführt.

Format für die Batchdatei:

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

Viel Glück, wenn das nicht funktioniert, spielen Sie mit dem Startordner.

0
Codes

Schauen Sie sich ComSpec https://www.autoitscript.com/wiki/Snippets_%28_CMD_%29 an

Die Syntax ist aufgrund von Escapezeichen manchmal etwas kompliziert, aber es ist möglich.

Möglicherweise stellen Sie auch fest, dass Sie einige Befehlszeilen durch integrierte Funktionen in AutoIT ersetzen können

Bitte zitieren Sie die wesentlichen Teile der Antwort aus den Referenzlinks, da die Antwort ungültig werden kann, wenn sich die verlinkten Seiten ändern. DavidPostill vor 8 Jahren 0