manu90
Goto Top

Startzeit eines Batches direkt eingeben

hallo zusammen,

ich führe Zeitgesteuert einen Reboot einiger Maschinen durch, das sehr simpel:

shutdown /r /f /t XXX

ich habe jetzt folgendes Problem... XXX sollte irgendwann in der nächsten Nacht sein...
i.M. mache ich das per Taskplaner aber das ist ehrlich gesagt schon aufwändig wenn ich das zusätzlich darüber starten muss...

am besten wäre ich könnte den Batch doppelklicken und der könnte die aktulle Zeit nehmen - die Differenz zur Reboot Zeit ausrechnen und dann diesen Wert in XXX setzen...

kann man das tun?

vielen Dank.

Content-ID: 281651

Url: https://administrator.de/contentid/281651

Ausgedruckt am: 05.11.2024 um 20:11 Uhr

122990
122990 31.08.2015, aktualisiert am 01.09.2015 um 21:36:53 Uhr
Goto Top
Mit schtasks einen Task in der Batch anlegen der sich selber löscht oder den du einmal anlegst und dann per Batch nur aktivieren musst ist das doch kein Aufwand, sehe hier das Problem nicht?

Wenn du das unbedingt so haben willst:
@echo off
powershell -Executionpolicy ByPass -Command "&'shutdown.exe' /r /f /t ([math]::round(((get-date '22:30')-(get-date)).TotalSeconds))"  

Gruß grexit
manu90
manu90 01.09.2015 um 20:58:43 Uhr
Goto Top
hi Danke,

das PS script läuft aber meldet den PC nach 1 Min ab...
ist da etwas bei der Berechnung bei get-date falsch?

ciao.
122990
122990 01.09.2015 aktualisiert um 21:03:16 Uhr
Goto Top
Sorry kleiner Fehler , ist oben korrigiert ...
manu90
manu90 01.09.2015 um 21:17:15 Uhr
Goto Top
Haaaaaaammmer....
danke face-smile

ich habe mit wiki probiert das Datum richtig zu stellen habs nur auf get-date -Format t gebracht...
face-sad

ich muss ja PS noch die Scripte erlauben.

Set-ExecutionPolicy
RemoteSigned

muss man das manuell machen oder lässt sich das auch über ein ps1 ausführen?

und kann man ein ps1 Script nicht doppelklicken für den Start in PS geht es nur über rechts klick > Powershell ?

vielen Dank
122990
122990 01.09.2015 aktualisiert um 21:25:31 Uhr
Goto Top
Zitat von @manu90:
ich muss ja PS noch die Scripte erlauben.

Set-ExecutionPolicy
RemoteSigned
Nur wenn du ein natives Powershell-Script nutzt, das obige geht auch in einer Batch mit Executionpolicy-Bypass wie du siehst face-wink
muss man das manuell machen oder lässt sich das auch über ein ps1 ausführen?
Brauchst du bei obigem Batch-Schnippsel nicht, einfach in eine BAT einfügen und freuen...
und kann man ein ps1 Script nicht doppelklicken für den Start in PS geht es nur über rechts klick > Powershell ?
Kann man z.B. mit ExtMan anpassen das bei doppelklick die ps1 ausgeführt wird, aber obiger Schnippsel ist wie gesagt so wie er dort steht direkt in einer Batch nutzbar.
manu90
manu90 01.09.2015 um 21:37:00 Uhr
Goto Top
wow stimmt. so gut.
ist es möglich diese fixe get-date '22:30' zu überschreiben während dem Ausführen?


danke dir vielmals.
122990
122990 01.09.2015 aktualisiert um 21:38:35 Uhr
Goto Top
Zitat von @manu90:
ist es möglich diese fixe get-date '22:30' zu überschreiben während dem Ausführen?
Was meinst du damit ? Du kannst es von mir aus durch eine Batch-Variable ersetzen und in deiner Batch abfragen ...
122990
122990 01.09.2015 aktualisiert um 21:40:09 Uhr
Goto Top
also bspw. so:
@echo off
set /p mytime=Wann soll reboot erfolgen:
powershell -Executionpolicy ByPass -Command "&'shutdown.exe' /r /f /t ([math]::round(((get-date '%mytime%')-(get-date)).TotalSeconds))"  
manu90
manu90 01.09.2015 um 21:48:44 Uhr
Goto Top
face-smileface-smileface-smile

ich glaub es nicht ich suche wie verrückt nach diesen Befehlen und du haust die da so einfach rein ... wow.

ui habe aber noch ein Problem entdeckt wenn ich jetzt 21.45 nehme und Reboot erfolgt 03:00 ... dann hat das Teil ein Problem...
kann man das auch umgehen?
122990
122990 01.09.2015 aktualisiert um 21:51:47 Uhr
Goto Top
Zitat von @manu90:
ui habe aber noch ein Problem entdeckt wenn ich jetzt 21.45 nehme und Reboot erfolgt 03:00 ... dann hat das Teil ein Problem...
kann man das auch umgehen?
Dann geben am Prompt von meinem Beispiel einfach das Datum von Morgen mit an:
02.09.2015 03:00
Dann geht auch das problemlos
manu90
manu90 01.09.2015 um 21:58:29 Uhr
Goto Top
Wahnsinn...


ich versuche mich nun mit if und else

also wenn ich mit der fixen Zeit z.b. 23.00 einverstanden bin = 1 drücken
oder meine Zeit eingeben = 2 drücken...

haste für sowas auch so schnell was im Köcher?

danke danke danke
122990
Lösung 122990 01.09.2015 aktualisiert um 22:14:24 Uhr
Goto Top
Zitat von @manu90:
also wenn ich mit der fixen Zeit z.b. 23.00 einverstanden bin = 1 drücken
oder meine Zeit eingeben = 2 drücken...

haste für sowas auch so schnell was im Köcher?
@echo off
:start
cls
echo Auswahl:
echo [1] Reboot um 23:00
echo [2] Zeit angeben
choice /C 12 /M "Deine Auswahl"  
if "%errorlevel%" == "255" goto :start  
goto option%errorlevel%

:option1
set "reboot=23:00"  
goto exec

:option2
set /p reboot=Um welches Datum/Uhrzeit soll reboot erfolgen:

:exec
powershell -Executionpolicy ByPass -Command "&'shutdown.exe' /r /f /t ([math]::round(((get-date '%reboot%')-(get-date)).TotalSeconds))"  
Sonst noch was ...
manu90
manu90 01.09.2015 um 22:09:08 Uhr
Goto Top
oh Mensch wenn ich das sehe und dann meine Versuche anschaue...
ich beende das glaub ich besser wieder...

irgendwie ist bei mir alles so kompliziert und völlig falsch und dein Code schaut so einfach aus...


gell aber mein pause am Schluss damit das Fenster nicht zugeht ist schon passabel face-wink
122990
Lösung 122990 01.09.2015 aktualisiert um 22:14:17 Uhr
Goto Top
Das kommt schon. Übung macht den Meister.

Schönen Abend.
grexit

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen.
manu90
manu90 01.09.2015 um 22:14:09 Uhr
Goto Top
ja das wars ... und grosses DANKE