Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

PC per VBA code Herunterfahren und mit einem Benachrichtigungs-Feld

Frage Entwicklung Batch & Shell

Mitglied: raffi83

raffi83 (Level 1) - Jetzt verbinden

13.08.2010 um 18:15 Uhr, 5909 Aufrufe, 16 Kommentare

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
Mitglied: sebastianpuetz
13.08.2010 um 18:22 Uhr
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
Bitte warten ..
Mitglied: bastla
13.08.2010 um 18:28 Uhr
Hallo raffi83!

PsShutdown bietet die Schalter "-c" und "-v" ...

Grüße
bastla
Bitte warten ..
Mitglied: mathe172
13.08.2010 um 18:44 Uhr
Hallo raffi83!

Versuchs damit:
01.
... 
02.
::Code davor 
03.
shutdown -s -t 30 
04.
::Vielleicht etwas mehr Zeit da oben... 
05.
:Abfrage 
06.
set /p shutdown="Wenn sie abbrechen wollen "Abb" eingeben!: " 
07.
if /i "%shutdown%"=="Abb" shutdown -a 
08.
if /i "%shutdown%"==""Abb"" shutdown -a 
09.
goto Abfrage
Das Fragt einen solange ob man abbrechen will bis der Pc heruntergefahren wird.

Mathe172
Bitte warten ..
Mitglied: bastla
13.08.2010 um 19:15 Uhr
@mathe172
Könntest Du vielleicht noch ein "/i" für das "if" spendieren (soll ja nicht in Stress ausarten )?

Grüße
bastla
Bitte warten ..
Mitglied: mathe172
13.08.2010 um 20:33 Uhr
@bastla:
Danke für den Hinweis (Habs oben geändert)

Mathe172
Bitte warten ..
Mitglied: bastla
13.08.2010 um 21:04 Uhr
Hallo raffi83!

Um auch die ursprüngliche Frage zu beantworten: Ein Batch mit etwas VBS garniert könnte so aussehen:
01.
@echo off & setlocal 
02.
set G=%temp%\GetAnswer.vbs 
03.
>%G% echo WScript.Echo WScript.CreateObject("WScript.Shell").PopUp("Möchten Sie den PC jetzt herunterfahren ?",60,"Herunterfahren?",vbYesNo+vbQuestion) 
04.
for /f %%i in ('cscript //nologo %G%') do set "Antwort=%%i" 
05.
if %Antwort% neq 7 echo shutdown -s -t 10
Die möglichen Rückgabecodes des VBScripts sind
-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
Bitte warten ..
Mitglied: rubberman
14.08.2010 um 19:15 Uhr
@bastla

hybsch

Vielleicht auch so:
01.
@echo off & setlocal 
02.
set G=%temp%\GetAnswer.vbs 
03.
>%G% echo WScript.Quit WScript.CreateObject("WScript.Shell").PopUp("Möchten Sie den PC jetzt herunterfahren ?",60,"Herunterfahren?",vbYesNo+vbQuestion) 
04.
%G% 
05.
if %errorlevel% neq 7 echo shutdown -s -t 10
Viele Wege führen in die italienische Hauptstadt.

Grüße
rubberman
Bitte warten ..
Mitglied: bastla
14.08.2010 um 20:43 Uhr
@rubberman

Gefällt mir besser (und das -1 als Errorlevel sollte eigentlich auch keine Probleme machen) ...

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
14.08.2010 um 21:20 Uhr
Zitat von bastla:
[...](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:
01.
@echo off &setlocal 
02.
 
03.
cmd /c exit 1 
04.
echo 2^^0                 %errorlevel% 
05.
echo. 
06.
 
07.
cmd /c exit 2 
08.
echo 2^^1                 %errorlevel% 
09.
echo. 
10.
echo. 
11.
 
12.
cmd /c exit 2147483646 
13.
echo 2^^31 -2    %errorlevel% 
14.
echo. 
15.
 
16.
cmd /c exit 2147483647 
17.
echo 2^^31 -1    %errorlevel% 
18.
echo. 
19.
 
20.
cmd /c exit 2147483648 
21.
echo 2^^31      %errorlevel% 
22.
echo. 
23.
 
24.
cmd /c exit 2147483649 
25.
echo 2^^31 +1   %errorlevel% 
26.
echo. 
27.
echo. 
28.
 
29.
cmd /c exit 4294967294 
30.
echo 2^^32 -2            %errorlevel% 
31.
echo. 
32.
 
33.
cmd /c exit 4294967295 
34.
echo 2^^32 -1            %errorlevel% 
35.
pause>nul
Danach geht's wieder bei 0 aufwärts weiter.
Bitte warten ..
Mitglied: Friemler
14.08.2010 um 22:55 Uhr
Hallo rubberman,

oder so:
01.
@echo off & setlocal 
02.
 
03.
shutdown -s -t 10 
04.
 
05.
set G=%temp%\GetAnswer.vbs 
06.
>%G% echo WScript.Quit WScript.CreateObject("WScript.Shell").PopUp("Möchten Sie den PC jetzt herunterfahren ?",60,"Herunterfahren?",vbYesNo+vbQuestion) 
07.
%G% 
08.
if %errorlevel% equ 7 shutdown -a 
09.
del %G% 
10.
 
11.
endlocal
shutdown -a bricht einen laufenden Shutdown ab.

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
14.08.2010 um 23:04 Uhr
... 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 ...
Bitte warten ..
Mitglied: Friemler
14.08.2010 um 23:41 Uhr
Hallo bastla,

dann eben so:
01.
@echo off & setlocal 
02.
 
03.
shutdown -s -t 10 
04.
 
05.
set G=%temp%\GetAnswer.vbs 
06.
>%G% echo WScript.Quit WScript.CreateObject("WScript.Shell").PopUp("Moechten Sie das Herunterfahren des PCs abbrechen?",9,"Herunterfahren abbrechen?",vbYesNo+vbQuestion+vbSystemModal) 
07.
%G% 
08.
if %errorlevel% equ 6 shutdown -a 
09.
del %G% 
10.
 
11.
endlocal
Durch vbSystemModal erscheint der PopUp im Vordergrund.

Gruß
Friemler
Bitte warten ..
Mitglied: raffi83
16.08.2010 um 17:25 Uhr
Hallo bastla

Erstmals vielen Dank für eure Arbeit !

Habe mal Deine Idee ausprobiert . Gefällt mir gut dein Script leider fährt mein Pc nach abwarten der Zeit oder durch bestätigen mit "JA" nicht herunter (habe das "echo" in der Zeile 05. zwischen "neg 7" und "schutdown" entfernt leider ohne Erfolg. Hast Du eine Idee an was das liegen könnte?

Gruss Raffi
Bitte warten ..
Mitglied: bastla
16.08.2010 um 18:27 Uhr
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
Bitte warten ..
Mitglied: raffi83
17.08.2010 um 17:45 Uhr
Hallo bastla

habe nochmals einwenig "herumgetüfftelt" und das Problem gefunden. Ich musste den gesammten Pfad von shutdown.exe richtig angeben und jetzt ist alles wie es sein sollte.
01.
@echo off & setlocal  
02.
set G=%temp%\GetAnswer.vbs  
03.
>%G% echo WScript.Quit WScript.CreateObject("WScript.Shell").PopUp("Möchten Sie den PC jetzt herunterfahren ?",60,"PC Shutdown",vbYesNo+vbQuestion)  
04.
%G% 
05.
if %errorlevel% neq 7 c:\windows\system32\shutdown.exe -s -f -t 30
Ich Danke allen, die an der Lösung meines Problems gearbeitet haben. Besonders bedanken möchte ich mich bei dir bastla ! Dank deiner Idee habe ich nun die Lösung die ich mir erhoft habe

schönen Abend
Grüsse raffi

[Edit Biber] Codetags spendiert. [/Edit]
Bitte warten ..
Mitglied: rubberman
17.08.2010 um 19:05 Uhr
@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
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Microsoft Office
Kreuztabelle Access + VBA Code (7)

Frage von Dr.Cornwallis zum Thema Microsoft Office ...

Datenbanken
gelöst Access Report per Email versenden, hat jemand zufällig einen Code dafür(VBA) (7)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Windows 10
gelöst PC startet nach Task herunterfahren nicht mehr automatisch (15)

Frage von Diddi-tb zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...