PC per VBA code Herunterfahren und mit einem Benachrichtigungs-Feld
Hallo Zusammen
habe folgendes Problem und breuchte mal eure Hilfe !
Habe eine Batch-Datei (shutdown -s -t 10) erstellt die mir die Pc's in der Firma automatisch bei einer bestimmten Tageszeit herunterfährt.
Das Funktioniert auch ohne Problem. Leider hat das ganze einen kleinen Schönheitsfehler, wenn die Datei aktiviert wurde kann sie durch den Benutzer, der noch an diesem PC arbeitet nicht mehr gestoppt werden.
Nun meine Idee: ich habe mit einem VBA Code versucht eine Inputbox zu erstellen auf der der Benutzer den Vorgang des Herunterfahrens stoppen kann in dem die Frage erscheint " Möchten Sie den PC jetzt Herunterfahren ? " Der Benutzer soll nun nur die Möglichkeit besitzen den Vorgang mit der "Inputbox" Nein oder Abbrechen das ganze zu stoppen. Bei keiner Reaktion des Benutzers soll der PC nach 1min. heruntergefahren werden.
Da ich mich nicht sehr gut mit der Erstellung solcher Cod's auskenne und auch nicht zu einem brauchbaren Resultat, bei meinen unzähligen Versuchen gekommen bin, erhoffe ich mir Ihr könntet mir einwenig weiterhelfen.
Danke allen schon für eure Lösungsvorschläge
have a nice weekend
Grüsse Raffi
habe folgendes Problem und breuchte mal eure Hilfe !
Habe eine Batch-Datei (shutdown -s -t 10) erstellt die mir die Pc's in der Firma automatisch bei einer bestimmten Tageszeit herunterfährt.
Das Funktioniert auch ohne Problem. Leider hat das ganze einen kleinen Schönheitsfehler, wenn die Datei aktiviert wurde kann sie durch den Benutzer, der noch an diesem PC arbeitet nicht mehr gestoppt werden.
Nun meine Idee: ich habe mit einem VBA Code versucht eine Inputbox zu erstellen auf der der Benutzer den Vorgang des Herunterfahrens stoppen kann in dem die Frage erscheint " Möchten Sie den PC jetzt Herunterfahren ? " Der Benutzer soll nun nur die Möglichkeit besitzen den Vorgang mit der "Inputbox" Nein oder Abbrechen das ganze zu stoppen. Bei keiner Reaktion des Benutzers soll der PC nach 1min. heruntergefahren werden.
Da ich mich nicht sehr gut mit der Erstellung solcher Cod's auskenne und auch nicht zu einem brauchbaren Resultat, bei meinen unzähligen Versuchen gekommen bin, erhoffe ich mir Ihr könntet mir einwenig weiterhelfen.
Danke allen schon für eure Lösungsvorschläge
have a nice weekend
Grüsse Raffi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148971
Url: https://administrator.de/contentid/148971
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
16 Kommentare
Neuester Kommentar
Hi,
ein anderer Ansatz:
http://wiki.winboard.org/index.php/Kleine_Pause_in_einer_Batch-Datei_ei ...
Man könnte nen Text als Einleitung schreiben:
z.B. Drücken Sie bitte "STRG+C" um das Herunterfahren zu stoppen!
Hilft das?
Grüße
Sebastian
ein anderer Ansatz:
http://wiki.winboard.org/index.php/Kleine_Pause_in_einer_Batch-Datei_ei ...
Man könnte nen Text als Einleitung schreiben:
z.B. Drücken Sie bitte "STRG+C" um das Herunterfahren zu stoppen!
Hilft das?
Grüße
Sebastian
Hallo raffi83!
Versuchs damit:
Das Fragt einen solange ob man abbrechen will bis der Pc heruntergefahren wird.
Mathe172
Versuchs damit:
...
::Code davor
shutdown -s -t 30
::Vielleicht etwas mehr Zeit da oben...
:Abfrage
set /p shutdown="Wenn sie abbrechen wollen "Abb" eingeben!: "
if /i "%shutdown%"=="Abb" shutdown -a
if /i "%shutdown%"==""Abb"" shutdown -a
goto Abfrage
Mathe172
@mathe172
Könntest Du vielleicht noch ein "
Grüße
bastla
Könntest Du vielleicht noch ein "
/i
" für das "if
" spendieren (soll ja nicht in Stress ausarten )?Grüße
bastla
Hallo raffi83!
Um auch die ursprüngliche Frage zu beantworten: Ein Batch mit etwas VBS garniert könnte so aussehen:
Die möglichen Rückgabecodes des VBScripts sind
-1: Zeitablauf
6: Ja
7: Nein
Da in den ersten beiden Fällen "
Zum Testen wird (durch das "
Grüße
bastla
Um auch die ursprüngliche Frage zu beantworten: Ein Batch mit etwas VBS garniert könnte so aussehen:
@echo off & setlocal
set G=%temp%\GetAnswer.vbs
>%G% echo WScript.Echo WScript.CreateObject("WScript.Shell").PopUp("Möchten Sie den PC jetzt herunterfahren ?",60,"Herunterfahren?",vbYesNo+vbQuestion)
for /f %%i in ('cscript //nologo %G%') do set "Antwort=%%i"
if %Antwort% neq 7 echo shutdown -s -t 10
-1: Zeitablauf
6: Ja
7: Nein
Da in den ersten beiden Fällen "
shutdown
" ausgeführt werden soll, muss nur auf die Antwort "7" geprüft werden.Zum Testen wird (durch das "
echo
" davor) der "shutdown
"-Befehl nur angezeigt - wenn dieses "echo
" entfernt wird, fährt der Rechner tatsächlich herunter ...Grüße
bastla
@bastla
hybsch
Vielleicht auch so:
Viele Wege führen in die italienische Hauptstadt.
Grüße
rubberman
hybsch
Vielleicht auch so:
@echo off & setlocal
set G=%temp%\GetAnswer.vbs
>%G% echo WScript.Quit WScript.CreateObject("WScript.Shell").PopUp("Möchten Sie den PC jetzt herunterfahren ?",60,"Herunterfahren?",vbYesNo+vbQuestion)
%G%
if %errorlevel% neq 7 echo shutdown -s -t 10
Viele Wege führen in die italienische Hauptstadt.
Grüße
rubberman
@rubberman
Gefällt mir besser (und das -1 als Errorlevel sollte eigentlich auch keine Probleme machen) ...
Grüße
bastla
Gefällt mir besser (und das -1 als Errorlevel sollte eigentlich auch keine Probleme machen) ...
Grüße
bastla
Zitat von @bastla:
[...](und das -1 als Errorlevel sollte eigentlich auch keine Probleme machen) [...]
[...](und das -1 als Errorlevel sollte eigentlich auch keine Probleme machen) [...]
Nach allem, was ich bisher getestet habe, kannst du die vollen 32 Bit auch für den Errorlevelwert ausschöpfen.
Das heißt 2^31 - 1 für positive Werte, alles was größer ist wird eh als negative Zahl interpretiert.
Mit -1 (also 2^32 - 1) sind wir durchaus im Range und es gibt keine Probleme.
Grüße
rubberman
Edit:
Der Test in Kurzform:
@echo off &setlocal
cmd /c exit 1
echo 2^^0 %errorlevel%
echo.
cmd /c exit 2
echo 2^^1 %errorlevel%
echo.
echo.
cmd /c exit 2147483646
echo 2^^31 -2 %errorlevel%
echo.
cmd /c exit 2147483647
echo 2^^31 -1 %errorlevel%
echo.
cmd /c exit 2147483648
echo 2^^31 %errorlevel%
echo.
cmd /c exit 2147483649
echo 2^^31 +1 %errorlevel%
echo.
echo.
cmd /c exit 4294967294
echo 2^^32 -2 %errorlevel%
echo.
cmd /c exit 4294967295
echo 2^^32 -1 %errorlevel%
pause>nul
Hallo rubberman,
oder so:
shutdown -a bricht einen laufenden Shutdown ab.
Gruß
Friemler
oder so:
@echo off & setlocal
shutdown -s -t 10
set G=%temp%\GetAnswer.vbs
>%G% echo WScript.Quit WScript.CreateObject("WScript.Shell").PopUp("Möchten Sie den PC jetzt herunterfahren ?",60,"Herunterfahren?",vbYesNo+vbQuestion)
%G%
if %errorlevel% equ 7 shutdown -a
del %G%
endlocal
shutdown -a bricht einen laufenden Shutdown ab.
Gruß
Friemler
... wobei ein 60s-PopUp für einen bereits laufenden 10s-Countdown etwas überdimensioniert scheint ...
Grüße
bastla
P.S.:
Es fehlt auch noch die Unterscheidung zwischen "Ja, ich will!" mit Konsequenz "Es geht sofort abwärts!" und "Jetzt konnte ich mich 1 ganze Minute lang nicht entscheiden ..." mit dem Ergebnis "Na gut, dann kannst Du ja noch 2 Minuten auf den Niedergang warten ...", oder so ...
Grüße
bastla
P.S.:
Es fehlt auch noch die Unterscheidung zwischen "Ja, ich will!" mit Konsequenz "Es geht sofort abwärts!" und "Jetzt konnte ich mich 1 ganze Minute lang nicht entscheiden ..." mit dem Ergebnis "Na gut, dann kannst Du ja noch 2 Minuten auf den Niedergang warten ...", oder so ...
Hallo bastla,
dann eben so:
Durch vbSystemModal erscheint der PopUp im Vordergrund.
Gruß
Friemler
dann eben so:
@echo off & setlocal
shutdown -s -t 10
set G=%temp%\GetAnswer.vbs
>%G% echo WScript.Quit WScript.CreateObject("WScript.Shell").PopUp("Moechten Sie das Herunterfahren des PCs abbrechen?",9,"Herunterfahren abbrechen?",vbYesNo+vbQuestion+vbSystemModal)
%G%
if %errorlevel% equ 6 shutdown -a
del %G%
endlocal
Durch vbSystemModal erscheint der PopUp im Vordergrund.
Gruß
Friemler
Hallo raffi83!
Mit welchem User wird der Batch ausgeführt?
Darf ich übrigens nochmals auf "psshutdown" hinweisen? Zusammen mit einer Liste von Clients (als Parameter "@Liste.txt") lässt sich damit das Herunterfahren vom Server aus starten und, bei Verwendung des Schalters "-c", am Client abbrechen ...
Grüße
bastla
Mit welchem User wird der Batch ausgeführt?
Darf ich übrigens nochmals auf "psshutdown" hinweisen? Zusammen mit einer Liste von Clients (als Parameter "@Liste.txt") lässt sich damit das Herunterfahren vom Server aus starten und, bei Verwendung des Schalters "-c", am Client abbrechen ...
Grüße
bastla
@raffi83
Das verwundert mich jetzt schon etwas.
Wenn
shutdown -s -t 10
nicht funktioniert, könnte es daranliegen, dass dein Batch "shutdown.bat" heißt (sollte man natürlich vermeiden). Somit ruft sich der Batch selbst auf. Egal. Dann sollte aber wenigstens
shutdown.exe -s -t 10
funktionieren.
Wenn du wirklich den gesamten Pfad angeben musst, klingt das irgendwie nach einer fehlerhaften PATH Umgebungsvariablen.
Grüße
rubberman
Das verwundert mich jetzt schon etwas.
Wenn
shutdown -s -t 10
nicht funktioniert, könnte es daranliegen, dass dein Batch "shutdown.bat" heißt (sollte man natürlich vermeiden). Somit ruft sich der Batch selbst auf. Egal. Dann sollte aber wenigstens
shutdown.exe -s -t 10
funktionieren.
Wenn du wirklich den gesamten Pfad angeben musst, klingt das irgendwie nach einer fehlerhaften PATH Umgebungsvariablen.
Grüße
rubberman