Shutdown cmd Befehl abrufen

  • Hallo @L11ght

    Warum nimmst Du nicht den nativen AutoIt Befehl 'Shutdown' ?

    Auszug aus der Hilfe :
    Befehl : Shutdown - fährt das System herunter.
    Shutdown ( code [, reason] )

    Parameter
    code - Eine Kombination von Herunterfahr-Codes. Siehe Anmerkungen.
    reason - [optional] Shutdown-Code des Users.

    Rückgabewert
    Erfolg : Gibt 1 zurück.
    Fehler : Gibt 0 zurück und @error wird auf GetLastError() gesetzt.

    Bemerkungen
    Der Herunterfahr-Code ist eine Kombination der folgenden Werte:
    0 = Abmelden / Logoff
    1 = Herunterfahren / Shutdown
    2 = Neu Starten / Reboot
    4 = Herunterfahren erzwingen / Force
    8 = Strom abschalten / Power down
    16= Erzwingen, falls das System hängt
    32= Bereitschaftsmodus / Standby
    64= Schlafmodus / Hibernate


    Falls Du alternativ den Windows-Befehl verwenden möchtest (Beispiel 60 Sekunden), dann :
    Run("c:\windows\system32\shutdown.exe /s /t 60", "", @SW_HIDE)
    oder :
    Run(@ComSpec & " /c shutdown /s /t 60", "", @SW_HIDE)

    Bei Windows 7 werden Parameter mit / eingeleitet (ansonsten mit - probieren).

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (15. August 2017 um 01:46) aus folgendem Grund: Antwort ergänzt

  • Hallo,

    erstmal danke für die schnelle Rückmeldung.

    Eigentlich wollte ich über die Inputbox eine Variable definieren wann der PC runtergefahren wird. (Sprich erst nach 2h oder so)
    Dann führt das Script einfach die CMD aus mit shutdown -t -s $variable und schließt sich danach wieder.
    würde ich über AUTOIT machen müsste ich praktisch nur Sleep($variable) machen, was aber zur Folge hätte, das das Script immer im Hintergrund läuft. Das stört mich

  • Hallo @L11ght !
    Ich hatte meine Antwort im obigen Beitrag bereits ergänzt, aber das hast Du ggf. übersehen. Daher wiederhole ich es hier noch mal :

    Falls Du alternativ den Windows-Befehl verwenden möchtest (Beispiel 60 Sekunden), dann :
    Run("c:\windows\system32\shutdown.exe /s /t 60", "", @SW_HIDE)
    oder :
    Run(@ComSpec & " /c shutdown /s /t 60", "", @SW_HIDE)

    Bei Windows 7 werden Parameter mit / eingeleitet (ansonsten mit - probieren).

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (15. August 2017 um 02:14)

  • Bin gerade unterwegs und kanns nicht testen, aber eigentlich sollte das so dann funktionieren oder

    Run(@ComSpec & " /c shutdown /s /t" & $variable, "", @SW_HIDE)

  • Bin gerade unterwegs und kanns nicht testen, aber eigentlich sollte das so dann funktionieren oder

    Run(@ComSpec & " /c shutdown /s /t" & $variable, "", @SW_HIDE)

    Hallo @L11ght !

    Fast ;) .
    Hinter dem /t" muss, meiner Meinung nach, noch ein Leerzeichen 'rein, also /t " . Die Syntax lautet /t 000 (000 für Sekunden), siehe : shutdown /? .

    Edit :
    Ich habe es gerade mal probiert -> das Leerzeichen zwischen /t und der Zeitangabe ist (zumindest bei Win7) Pflicht !

    Falls alles funktioniert, dann bitte deinen Startbeitrag editieren und auf gelöst setzen (grüner Haken).

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    2 Mal editiert, zuletzt von Musashi (15. August 2017 um 07:11) aus folgendem Grund: Ergänzung

  • Da gibt's mehrere Optionen:

    AutoIt
    Local $iSeconds = 300


    1. So geht's...

    AutoIt
    Run(@WindowsDir & "\SysWOW64\shutdown.exe /s /t " & $iSeconds, "", @SW_HIDE); x64
    Run(@WindowsDir & "\System32\shutdown.exe /s /t " & $iSeconds, "", @SW_HIDE); x86
    Run(@SystemDir & "\shutdown.exe /s /t " &$iSeconds, "", @SW_HIDE); automatisch


    2. oder so

    AutoIt
    $oShell = ObjCreate("WScript.Shell")
    If IsObj($oShell) Then $oShell.Run($oShell.ExpandEnvironmentStrings("%WINDIR%") & "\SysWOW64\shutdown.exe /s /t " & $iSeconds); x64
    If IsObj($oShell) Then $oShell.Run($oShell.ExpandEnvironmentStrings("%WINDIR%") & "\System32\shutdown.exe /s /t " & $iSeconds); x86
    If IsObj($oShell) Then $oShell.Run(@SystemDir & "\shutdown.exe /s /t " & $iSeconds); automatisch


    3. so auch

    AutoIt
    ShellExecute(@WindowsDir & "\SysWOW64\shutdown.exe", "/s /t " & $iSeconds, "", "", @SW_HIDE); x64
    ShellExecute(@WindowsDir & "\System32\shutdown.exe", "/s /t " & $iSeconds, "", "", @SW_HIDE); x86
    ShellExecute(@SystemDir & "\shutdown.exe", "/s /t " & $iSeconds, "", "", @SW_HIDE); automatisch

    4. und letztendlich die Konsolenoptionen:


    AutoIt
    Run(@ComSpec & " /c shutdown -s -t " & $iSeconds, "", @SW_HIDE); comspec
    Run(@WindowsDir & "\SysWOW64\cmd.exe /c shutdown -s -t " & $iSeconds, "", @SW_HIDE); x64
    ShellExecute(@WindowsDir & "\SysWOW64\cmd.exe", "/c shutdown -s -t " & $iSeconds, "", "", @SW_HIDE); x64
    Run(@WindowsDir & "\System32\cmd.exe /c shutdown -s -t " & $iSeconds, "", @SW_HIDE); x86
    ShellExecute(@WindowsDir & "\System32\cmd.exe", "/c shutdown -s -t " & $iSeconds, "", "", @SW_HIDE); x86
    Run(@SystemDir & "\cmd.exe /c shutdown -s -t " & $iSeconds, "", @SW_HIDE); automatisch
    ShellExecute(@SystemDir & "\cmd.exe", "/c shutdown -s -t " & $iSeconds, "", "", @SW_HIDE); automatisch

    Lg NO1 :)

    3 Mal editiert, zuletzt von NO1 :-) (18. August 2017 um 18:53)

  • Vielen Dank für die vielen Antworten. Bin aktuell dabei es zu lernen, da ich nach der Ausbildung eventuell eine Stelle kriege, wo es mir ziemlich nützlich sein wird.
    Kann closed werden.

  • Hallo,

    ob es mir nun jemand glaubt oder auch nicht. Ich habe beim Notebook eines Freundes (Medion mit Win10 x64) und bei mir selbst, beim scriptgesteuerten Herunterfahren mit Autoit ein (für mich) zermürbendes Problem.

    Bei allen hier genannten Varianten (z. B. mit Run(@SystemDir & "\shutdown.exe /s ", "", @SW_HIDE)oder mit Shutdown (5)   5=$SD_SHUTDOWN (1) = Shutdown & $SD_FORCE (4) = Force) kann ich den PC zwar herunterfahren aber er schaltet nicht aus. Es bleibt ein Schwarzer Bildschirm übrig aber die Betriebsleuchte bleibt an. Lüfter läuft. Schaltet nicht ab.

    Jetzt das fatale. Ab und an (so jedes 4rte oder 7te Mal, schaltet der PC ab. Alles aus. Aber nicht immer.

    Kann mir bitte jemand ein Tip geben, wie ich es mit AutoIt schaffen kann, den PC herunterzufahren und abzuschalten?

    Bitte antwortet jetzt aber nicht mit einem Tip wie: Mach das doch einfach über nen Batch. Weil: Da funktioniert es in der Tat mit dem herunterfahren & abschalten.

    Der angemeldete Benutzer hat lokale Administratorrechte.

    Frage: Kann das jemand von Euch bei seinem Win10 PC aus nachvollziehen?

    Einmal editiert, zuletzt von bazii (22. November 2017 um 21:08)

  • Darf man hier verlinken auf andere Seite? :/

    Ich Zitiere einfach...

    Vielleicht hilft dir das ja?

  • Danke für den Tip.

    Dennoch ist meine Ausgangslage eine andere (PC fährt herunter aber schaltet nicht aus) und auch nach dem deaktivieren des Schnellstarts tritt keine Besserung auf. Blöd ist halt, dass es mal klappt und mal nicht und ich kann nicht feststellen, an was es liegen könnte. Seltsam das ganze. Über die Eingabeaufforderung klappt alles bestens.

    Ich dachte es liegt letzlich an der Ausführung als Admin. Aber selbst wenn ich (bin lokaler Admin) die Eingabeaufforderung ohne explizide Adminrechte starte, klappt das herunterfahren mit dem Kommando shutdown /s bestens.

    Dennoch habe ich im Skript ein #RequireAdmin  eingefügt. Allerdings ohne Erfolg.

  • Ich hatte auch ein ähnliches Problem mit einem Medion-PC... als Ursache hat sich herausgestellt, dass das Netzteil zu schwach war und sich die Konensatoren (Elkos) zu langsam entladen haben, weil sie falsch dimensioniert waren.

    Ab und dauerte ein Neustart bis zu 15 min... nach einem "Kaltstart" dann aber nur etwa 3 min!

  • Da es ein Läppi sit - erst mal Netzteil wechseln und testen was Bitnugger vorschlägt.

    Was spricht dagegen einen Batch zu benutzen? Du willst der Sache auf den Grund gehen? -- > ok dann ist das keine Lösung.

    Du willst pragmatisch ein Script zum laufen bringen? Ruf den Batch aus Autoit auf. Mag nicht besonders schön sein, aber wenn es funktioniert.

    Es gibt einige kleine exes, die genau das machen. Schutdown.exe und Restart.exe probier mal aus ob die tun was sie sollen. Die könnte man im Zweifel auch einbinden.

    Sorry - ich bin z.T. anders gestrickt. Ich schreibe Code nur um etwas zu erreichen. Da ist es mir manchmal egal mit welchen Hilfsmitteln --> Hauptsache es funktioniert.


    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Netzteil kann eine Ursache sein aber auch eine noch nicht bearbeitet Anfrage.

    Hast du mal in der Ereignissanzeige nachgeschaut was da schief läuft?

    Unter "Start" mal --> Ereignisanzeige eingeben, als Admin starten wenn du da Einträge löschen möchtest.

    Unter "Anwendungs- und Dienstprotokolle" --> Microsoft --> Windows --> Diagnostics-Performance --> Betriebsbereit

    Dann mal nachschauen was da Probleme macht.

    Edit: ID-Liste gelöscht, war die falsche

    Wenn du da noch mehr eintauchen möchtest was das Protokolieren von Windows angeht dann schaue dir das mal an, ist zwar für Vista beschrieben geht aber auch für Win 10 nach kleineren Aufwand.

    Start/Runterfahren Protokoll

    Der auf der Seite erwähnte "Xbootmgr" ist hier mit enthalten: Windows Assessment and Deployment Kit

    Richtig gut beschrieben ist es hier:

    Windows Performance Toolkit – Installation – Teil 1

    Windows Performance Toolkit – Leistungsanalyse – Teil 2

    Windows Performance Toolkit – Starten/Herunterfahren analysieren – Teil 3


    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

    6 Mal editiert, zuletzt von oh-ha (25. November 2017 um 11:29)

  • Danke erstmal für Eure Hilfe.

    Ich hatte ein ähnliches Problem an einem PC: Ursache war das Netzteil, das hat nicht abgeschaltet oder auch ungefragt einen Reboot inszeniert.

    Ich hatte auch ein ähnliches Problem mit einem Medion-PC... als Ursache hat sich herausgestellt, dass das Netzteil zu schwach war und sich die Konensatoren (Elkos) zu langsam entladen haben, weil sie falsch dimensioniert waren.

    Da es ein Läppi sit - erst mal Netzteil wechseln und testen was Bitnugger vorschlägt.

    Netzteil kann eine Ursache sein aber auch eine noch nicht bearbeitet Anfrage.

    Hast du mal in der Ereignissanzeige nachgeschaut was da schief läuft?

    Jedoch kann ich es am Netzteil nicht festmachen, dass es am "schlussendlichen" Abschalten des PC, nach dem Herunterfahren schuld sein soll, wenn es doch mit Hilfe der Windows-Eingabeaufforderung und mit dem regulären Herunterfahren über das Windowsmenu funktioniert.

    Hast du mal in der Ereignissanzeige nachgeschaut was da schief läuft?

    Folgendes wurde beim Herunterfahren heute Nacht als Information (aber weder als Warnung noch als Fehler) protokolliert.

    ;Edit: Nachträglich hinzugefügt:

    ;Nachtrag Ende-

    Kann jemand von Euch aus den Einträgen einen Hinweis auf das nicht erfolgte Abschalten erkennen?

    oh-ha :

    Vielen Dank für Deine weiterführenden Links. Die schaue ich mir jetzt alle nach und nach an.

    Sorry - ich bin z.T. anders gestrickt. Ich schreibe Code nur um etwas zu erreichen. Da ist es mir manchmal egal mit welchen Hilfsmitteln --> Hauptsache es funktioniert.

    Ja und nein Peter. Je nach dem, welche prio das Thema für mich hat, finde ich es sehr hilfreich den Grund eines Problemes zu kennen. Auch dann wenn es auf andere Weise lösbar ist. So sehe ich aufgrund meiner Nachfrage mehrere hilfreiche Antworten , die mich bei ähnlich gelagerten Problemen weiterbringen. Ferner finde ich es wichtig die Ursache eines Problems zu finden, wenn dazu noch dritte davon provitieren können.

    Vielen Dank Euch allen!

    Einmal editiert, zuletzt von bazii (25. November 2017 um 13:53) aus folgendem Grund: Edit