Ich hab mal wieder eine Aufgabe, nach der ich einen PC zu einer bestimmten Uhrzeit herunterfahren will.
Der PC wird ferngesteuert gestartet und soll zu einer bestimmten Uhrzeit (nicht nach einer festgelegten Einschaltzeit!) wieder heruntergefahren werden.
Ich möchte das gerne mit einer *.cmd oder *.bat lösen, die im Autostart liegt.
Nach einer bestimmten Zeit, das kann man wohl mit -t 10 (für 10 Sekunden) erreichen, aber zu einer bestimmten Uhrzeit?
Meine DOS- Fähigkeiten sind minimal - deshalb bitte ich wieder um Eure Hilfe.
Danke!
Jürgen
Anwendungs-Software und Apps 14.490 Themen, 73.615 Beiträge
Wie wäre es mit einem "Geplanten Task"?
shutdown in eine Batchdatei schreiben und diese (täglich) zu einer bestimmten Zeit ausführen.
Gruß, mawe2
also eine cmd mit dem Inhalt
C:\Windows\system32\shutdown.exe -s -f -t 5
- in einen Ordner legen und diese cmd mit dem Geplanten Task zu einer vorbestimmten Zeit ansprechen?
Ganz ehrlich - hab ich noch nie gemacht, wenn etwas "Geplant" ausgeführt wurde, dann eine TV- Aufnahme.
Und das wurde mit dem zugehörigen Programm erledigt.
Darüber kann man auf jeden Fall nachdenken.
Trotzdem:
Gibt es eine Möglichkeit, mein Ziel (zu einer ganz bestimmten Uhrzeit runterfahren) mit einem DOS- Befehl zu erreichen?
Jürgen
Moin,
ich weiß, ist nicht das, was Du wolltest, aber der einfachste Weg:
http://poweroff.soft-ware.net/download.asp
Eine Möglichkeit, unter DOS die Uhrzeit einzubinden kenn ich nicht, dafür müsste die Systemzeit permanent abgerufen und übertragen werden.
Hier z.B., was mit dem shutdown-Befehl realisierbar ist:
http://www.all-about-pc.de/windows/tipp_anzeigen.asp?Windows&46
Nachtrag:
So könnte es funktionieren:
http://www.philognosie.net/index.php/tip/tipview/1037/
Gruß
Maybe
Von den 3 vorgeschlagenen Methoden wäre das erste Programm "PowerOff" wahrscheinlich das geeignetste.
Werde ich mir genauer anschauen.
Möglichkeit 2 - Optionen per shutdown kenne ich - da besteht allerdings leider nur die Möglichkeit der Programmierung einer Zeitspanne - nicht aber der Uhrzeit.
Und Möglichkeit 3 ist wohl in etwa das, was weiter oben Maybe vorschlug.
Jürgen
Das, maybe:
http://www.philognosie.net/index.php/tip/tipview/1037/
- funktioniert unter Win7 tadellos.
Unter XP (ist hier der Fall) ist es etwas anders - aber ähnlich.
Muß ich mich auch noch damit beschäftigen.
Wenn das mit der Batch nicht klappt, werde ich es so realisieren. Oder mit der nur ein paar kB kleinen, nicht zu installierenden "PowerOff".
Jürgen
Ist zwar ein etwas größeres Stück Software (hat noch ein paar mehr Funktionen), aber damit klappt es ganz vorzüglich: Klick
....mit DOS kann man eben nicht alles machen, da es auf einer ganz anderen Ebene läuft.
Gruß
K.-H.
Nachdem jetzt schon andere mit Softwarelösungen kommen, hierzu mein Tipp:
> http://www.chip.de/downloads/Don-t-Sleep_42626965.html
Das kleine Programm kann noch andere Dinge, wie z.B. den Sleep Modus ignorieren ...
Gruß Alfons
Vielen Dank, meine Herren - aber diese Aufgabe will ich (bockig, wie ich nun einmal bin, stur, uneinsichtig) wirklich nur mit einer Batch- Datei lösen - nicht mit einem Programm.
Mit einem Programm kann es jeder...
Jürgen
Die Batch müsste dann permanent im Hintergrund laufen.
Die Zeit bekommst du mit
echo %time%
da müsste dann ja eine endlosschleife rein, bis zu der Uhrzeit, wo der Rechner herunterfahren soll.
Vereinfacht müsste dann dann so aussehen:
@echo off
:start
echo %time%
goto :start
:next
Jetzt brauchste nur noch einen der dir da eine IF Anwendung reinfummelt.
Ist uhrzeit, dann shutdown.
Sowas in der Art müsste es sein, bzw damit lässt sich schon was anfangen:
http://stackoverflow.com/questions/2667164/bat-file-to-call-a-bat-if-time-is-less-than-1945-and-to-call-b-bat-if-time-is-gr
http://www.appdeploy.com/messageboards/tm.asp?m=22404
Vielleicht hilft es dir ja weiter.
mfg
Ich sagte oben "Mit einem Programm kann es jeder...". Für diese Kleinigkeit ein Progrämmchen, für die nächste ein weiteres.
Wenn man aber ein paar der grundlagen beherrscht, wie hier die mir noch weitestgehend unbekannte Programmierung, da kann man vieles lösen - ganz ohne Programme.
Das ist mein eigentliches Ziel.
Jürgen
@echo off
:enter_loop
set timer=%time:~0,8%
if %timer% == "14:42:40" goto ende_loop
goto enter_loop
:ende_loop
shutdown -s -f -t 5
So viel zum Anfang von mir - vom Prinzip her dürfte das Script klar sein. Da ist allerdings ein kleiner Fehler drin. Und zwar springt er (warum auch immer) nicht zur "ende_loop"-Marke um den Shutdown auszuführen, sobald die Uhrzeit eintritt.
Wenn jemand den Fehler behebt, sollte das Script deinen Anforderungen gerecht werden.
Hast Du Dir mal die Parameter vom Shutdown-Befehl angesehen?
Man kann das auch vom Remote-Computer machen.
Wenn das nicht hilft, dann ist es vielleicht möglich, die Variable Sekunden beim Starten der Batchdatei zu errechnen.
Auf jeden Fall
shutdown -s -t (Sekunden)
ist die einfachste Lösung.
Das ist tatsächlich die einfachste Möglichkeit - aber für mich ungeeignet.
Ich will es genauer erklären:
Es handelt sich um einen PC, der ferngesteuert zu beliebigen Zeiten eingeschaltet wird.
Auf diesem PC werden dann - ebenfalls ferngesteuert - Schalthandlungen ausgeführt.
Ich benutze da den mitstartenden Teamviewer und eine damit über den Parallelport ansprechbare Relais- Steuereinheit.
Einmal am Tage wird die gesamte Anlage für exakt 20 Minuten stromlos.
Nun kann es geschehen, das
- der Operator versäumt, nach seiner Schalthandlung den PC ferngesteuert herunterzufahren
- die Verbindung (ist nicht sehr zuverlässig) unterbrochen wird.
Da würde der PC (ist eigens dafür gebaut) hart ausgeschaltet werden. Das ist zwar nicht allzuschlimm - aber ich möchte genau das vermeiden. Deshalb möchte ich den PC kurz vor der Stromabschaltung automatisch herunterfahren lassen, wenn einer der oben genannten Fälle eintritt.
Das Ganze kann ich natürlich mit einem der angebotenen (und mir teilweise auch bekannten) Tools erledigen.
Da ich aber immer bestrebt bin, meine Entwicklungen so einfach, wie möglich zu gestalten, kam ich auf "das schmale Brett", das per DOS- Befehl, mit einer Batch- Datei machen zu wollen - und gleichzeitig mein Wissen damit zu erweitern.
Ist also nichts, mit die verbleibenden Sekunden errechnen.
Jürgen
Hallo Jürgen,
mal eine ganz andere Idee!
Hast Du mal über den Einsatz einer USV, für die Überbrückung, nachgedacht? Eine Zeitspanne von 20 Minuten läßt sich damit locker überbrücken. Dafür reichen evtl. auch schon recht günstige Geräte, wie z.B:
http://www.amazon.de/PowerWalker-VI-850-LCD-USV/dp/B002L16J88/ref=sr_1_16?ie=UTF8&qid=1310127256&sr=8-16
Die USB muss natürlich von der Kapazität her, den Verbrauchern angepasst werden.
Wie gesagt, nur eine Idee!
Gruß
Maybe
Die Idee ist nicht schlecht, eine USV habe ich daheim schon realisiert. Und zwar in der Hauptsache des Gewitterschutzes wegen - das bei Stromausfall meine Anlage noch 20...30 Minuten versorgt wird, ist eine angenehme Dreingabe. (Die ich noch nie nutzen mußte!)
Der Aufwand wäre dort aber wirklich übertrieben. Und: Die Stromabschaltung ist regelrecht gewollt.
Jürgen
Moin,
ich habe daheim auch eine USV im Einsatz, für, sagen wir mal "Sicherheitstechnik". Daher kam mir die Idee. Es ist natürlich ein finanzieller Faktor, der sich auch irgendwie rechnen muss.
Mein Gerät ist da nicht sonderlich wirtschaftlich und zieht sich mal eben 30 Watt rein. Es gibt da sicherlich effektivere Geräte, die aber auch deutlich mehr kosten.
Gruß
Maybe
by Kolti
************************************
@echo off
REM Stunden und Minuten auslesen
Set h=%time:~0,2%
Set m=%time:~3,2%
REM Alles in Sekunden umrechnen
Set /A Ergebnis=h*3600+m*60
REM Hier steht Deine Uhrzeit (22:00 Uhr = 79200)
Set /A Ergebnis=79200-Ergebnis
Shutdown -s -f -t %Ergebnis%
****************************************************
Kannst Du mal so ausprobieren.
Ich habe jetzt aber keine Fehlerabfrage gemacht, wenn Deine Uhrzeit schon vorbei ist und Ergebnis negativ wird.
Achtung!
shutdown.exe funktioniert nur mit Adminrechten.
Solltest Du das ganze mit einem Admin-Konto ausführen, sollte es reichen, folgenden Aufruf in einem Autostart-Pfad abzulegen:
schtasks /create /st 20:30:00 /ru "SYSTEM" /tn "Herunterfahren" /tr "C:\WINDOWS\system32\shutdown.exe -s -f -t 5" /sc einmal"
Wenn Du das z.B. über regedit in
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
reinpackst, wird dann beim Starten des Rechners ein Task angelegt, der einmalig ausgeführt wird und der den Rechner 5 Sekunden nach 20:30 herunterfährt.
Alles völlig ohne separate Programme, ohne Batch usw.
Wenn Du es nicht als Admin laufen lassen willst, wird es wohl etwas schwieriger.
Gruß, mawe2
PS: Um welches Windows geht es eigentlich? (Geht es überhaupt um Windows? Du hast das nicht weiter erwähnt.) Ich habe es mit Windows XP Prof SP3 getestet.
Beides, sowohl die Batch von peterson, als auch Deine Methode, mawe2, werde ich erproben.
Beides verstehe ich erst mal auf Anhieb nicht - aber bevor ich weiterfrage, werde ich mir das erst mal selbst "auseinanderposementieren".
Diese Schalterei soll auf einem PC mit XP SP3 erfolgen.
Vielen dank euch Beiden erst mal!
Jürgen
Was ist bei meiner Batch zu verstehen?
Ich habe doch jeden Schritt kommentiert.
hast du - aber Du hast hier einen, der von diesen befehlen überhaupt keine Ahnung hat.
Also will ich herausbekommen, was zB
Set h=%time:~0,2%
Set m=%time:~3,2%
bedeutet. Und REM.
Ich will es ja nicht nur mechanisch abschreiben, sondern verstehen, was ich mache.
Das meine ich damit!
Funktionieren tuts auf Anhieb.
Jürgen
REM bedeutet Remark, also Kommentar. Das wird nicht ausgeführt.
Die Variablen h und m beinhalten die Stunden und die Minuten, die ich in der Zeit-Information maskiere.
Und dann rechne ich die Stunden und Minuten in Sekunden um.
Dann ziehe ich von Deiner Uhrzeit (in Sekunden) die tatsächliche Uhrzeit ab und habe die Anzahl der Sekunden für den Countdown.
So, mawe2, jetzt an Dich:
Zuerst einmal konnte ich mit "schtasks" überhaupt nichts anfangen. Ich suchte also und fand das:
http://www.winhelpline.info/daten/dos/schtasks.php#
Verdammt, ich merke immer wieder, das ich nur ein winziges My der PC- Technik kenne!
Das funktioniert, per cmd ins Schwarze eingegeben tadellos.
Nur: Wie meinst Du das mit der Registry - da müßte ich doch einen Pfad zu diesem Befehl eingeben?
Und - wenn das täglich der Fall sein sollte, einfach das "/sc einmal" weglassen?
Ist schon ein mühsames Geschäft, einen unwissenden was beizubringen. Aber ich geb mir Mühe!
Jürgen
Grundsätzlich kannst Du solche "Geplanten Tasks" über die Systemsteuerung oder (an der Eingabeaufforderung) über schtasks anlegen. Da Du gern den Weg über die Eingabeaufforderung nehmen wolltest, habe ich schtasks vorgeschlagen.
Nun kann man solche Tasks so anlegen, dass sie (z.B.) täglich ausgeführt werden, dann musst Du statt "/sc einmal" "/sc täglich /mo 1" eingeben.
"schtasks /create /?" an der Eingabeaufforderung gibt dazu nähere Hinweise.
Meine Idee war, den Task nur als einmaligen Task zu planen ("/sc einmal"), dies aber immer beim Systemstart mit aufzurufen. Dann kann man es benutzerabhägig machen.
Ob man den Aufruf (zum Anlegen des Tasks) nun in einen benutzerspezifischen Registry-Pfad oder einfach in den Autostart des jeweiligen Users reinlegt, ist Geschmackssache. Wenn Du mit der Registry weniger Erfahrung hast, kannst Du die Zeile auch einfach in einer bat-Datei speichern und diese im Autostart des jeweiligen Users ablegen.
Aber vielleicht ist das auch schon zu hoch gegriffen: Schau Dir einfach mal die Möglichkeiten an, die Du in der Systemsteuerung bei "Geplante Tasks" findest - evtl. reicht das für deine Zwecke schon aus.
Jedenfalls kann man - wie es Dein Wunsch war - diese Aufgabe ohne weitere Software allein mit Windows-Bordmitteln erledigen.
Abschließend nochmal der Hinweis: Für den Admin ist das alles kein Problem, für Nicht-Admins muss man wohl etwas tiefer in die Trickkiste greifen, da habe ich momentan keine Lösung parat.
Gruß, mawe2
Noch einmal: Danke!
Das Ganze ist, wie ich schon weiter oben sagte, ein von mir bislang noch nie beschrittener Weg.
Der "Lerneffekt" meiner Frage hier war wieder sehr groß. Deswegen werde ich auch nie aufhören zu fragen.
Ich teste das Ganze nun ausführlich, wie auch petersons batch- Lösung.
Unter "schtasks /create /?" -was mir auch neu war- werden ja massig Hinweise angezeigt, genug Material für weitere Experimente.
Ich denke nämlich, das dies:
Jedenfalls kann man [...] diese Aufgabe ohne weitere Software allein mit Windows-Bordmitteln erledigen.
- noch viel zu wenig beachtet wird. Für alles und jedes ein Programm - das hatte ich auch schon mal. Früher hatte ich mal über 160 Programme und Progrämmchen installiert - die Datei "Installer" war auf meinem Test- PC letztlich auf 6GB angeschwollen. Ist ungesund sowas.
Jürgen
Es freut mich, dass ich Dir weiter helfen konnte.
Ich denke nämlich, das dies:
"Jedenfalls kann man [...] diese Aufgabe ohne weitere Software allein mit Windows-Bordmitteln erledigen."
- noch viel zu wenig beachtet wird.
Da bin ich genau Deiner Meinung. Deswegen habe ich auch auf Deine Frage ausführlicher geantwortet, weil ich auch solche Lösungen bevorzuge und weil ich auch beim Beantworten solcher Fragen noch viel dazu lerne.
Viel Spaß bei den weiteren Experimenten!
Gruß, mawe2
Ab heut läuft die Angelegenheit "scharf". Ich habe mich letztlich für den Taskplaner - schtasks /create entschieden.
Die batch wird mir anderweitig von großem Nutzen sein.
Aber in diesem Zusammenhang erinnerte ich mich an meine Anfangszeit 2002 hier bei Nickles.
Einer meiner "Geburtshelfer", TheVomit, hatte mir damals ein Programm empfohlen - ich weiß nicht mehr, was ich damals damit beabsichtigte. Aber im Hinterkopf war es noch - und ich habe die alten Notizen mal durchgeforstet.
"Xecutor" - und das gibts heut noch:
http://www.computerbild.de/download/Xecutor-4438263.html
Wie ich mich erinnere, war das auch ein ziemlich komfortables Programm für Zeit- oder Zeitpunkts. gesteuerte Aufgaben.
Noch einmal zum Abschluß - ganz herzlich "Danke" an alle!
Jürgen