Top-Themen

Aktuelle Themen (A bis Z)

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

gelöst Choice länger warten als 99 Sekunden?

Mitglied: pbelcl

pbelcl (Level 1) - Jetzt verbinden

19.06.2009, aktualisiert 14:19 Uhr, 4589 Aufrufe, 14 Kommentare

Kann man bei Choice eine längere Wartezeit angeben als 99 Sekunden?

Hi Leute,

Ich habe mir mit CHoice eine Auswahlfrage geschrieben:

01.
%utildir%\choice /cjn /t:n,600 j=ja oder n=nein    
02.
if errorlevel 2 goto Meldung 
03.
if errorlevel 1 goto OK
Leider geht der Choice Befehl immer schon nach 60 Sekunden weiter!
Ich vermute dass Choice nur zweistellige Zahlen mit dem /t Parameter verarbeiten kann.

Ich brauche aber in meinem Script eine Zeitspanne von ca. 10 Minuten!

Kann mir jemand einen Tipp geben, ob das mit Choice überhaupt geht?
Oder gibt es vielleicht andere Programme die Eingaben in einem Batch zulassen??
Mitglied: Destry
19.06.2009 um 14:57 Uhr
Hallo pbelcl,

mit "set /p" kannst Du Eingaben vom Nutzer abfragen.
Das Programm "sleep" kann für Pausen sorgen die länger als 10 Minuten sind.

Gruß,
Destry
Bitte warten ..
Mitglied: 76109
19.06.2009 um 15:19 Uhr
Hallo pbelcl!

Eine andere Alternative zudem, was "Destry" bereits genannt hat, währe das hier:

Speichere diesen Quelltext z.B. unter wait.vbs
01.
if wscript.arguments.count > 0 Then t=wscript.arguments(0): if isnumeric(t) then wscript.sleep t * 1000
Füge in Deiner Batch diesen Befehl mit Angabe der Zeit in Sekunden ein
01.
@cscript //nologo wait.vbs 600
Gruß Dieter
Bitte warten ..
Mitglied: bastla
19.06.2009 um 15:53 Uhr
... wobei pbelcl vielleicht eher an etwas in der Art gedacht haben dürfte:
01.
@echo off & setlocal 
02.
Set Sek=600 
03.
Set Text="Entscheide Dich!" 
04.
 
05.
set F=%temp%\Frage.vbs 
06.
>%F% echo WScript.Echo WScript.CreateObject("WScript.Shell").PopUp(%Text%,%Sek%,,4) 
07.
 
08.
for /f %%i in ('cscript //nologo %F%') do set "Antwort=%%i" 
09.
if %Antwort%==6 goto :OK 
10.
if %Antwort%==-1 echo Keine Antwort ist auch eine Antwort. & goto :eof 
11.
echo Na gut, dann nicht ... 
12.
goto :eof 
13.
 
14.
:OK 
15.
echo OK
Grüße
bastla
Bitte warten ..
Mitglied: 76109
19.06.2009 um 16:43 Uhr
Hallo bastla!

Zitat von bastla:
... wobei pbelcl vielleicht eher an etwas in der Art gedacht haben dürfte:
Hmh, das könnte gut sein

Gruß Dieter
Bitte warten ..
Mitglied: pbelcl
19.06.2009 um 21:04 Uhr
Hallo bastla,

Ich habe Dein Script ausprobiert, und muss sagen, toll.
Du bringst mich immer wieder dazu zu überlegen ob ich nicht doch meine bescheidenen batch Kentnisse in ein wenig scripting Host Kenntnisse erweitern sollte

Denn das unten angeführte Batch soll mich eine wählbare Zeitspanne lang erinnern meine Tabletten zu nehmen und nach ca. 10-30 Minuten wenn niemand reagiert ein Email verschicken, welches ich dann als SMS bekomme.

01.
@echo off 
02.
cls 
03.
echo "Bitte Pulver nehmen" 
04.
echo " Zeit 10 Minuten,sonst wird ein Erinnerungsmail verschickt" 
05.
 
06.
%utildir%\choice /cjn /t:n,99 j=ja oder n=nein    
07.
if errorlevel 2 goto Meldung 
08.
if errorlevel 1 goto OK 
09.
 
10.
 
11.
:OK 
12.
echo Pulver eingenommen >>%~n0.log 
13.
goto end 
14.
 
15.
:Meldung 
16.
echo ! ! ! ! ! Pulver NICHT eingenommen, Email zur Warnung verschickt!!! >>%~n0.log 
17.
%utildir%\gbmail -to mailadresse@domain.com -h smtp.domain.com -from pulver@domain.at -s "Pulver nicht genommen" 
18.
goto end 
19.
 
20.
:end
Die Probleme die ich habe sind:

1.) die 99 Sekunden Bschränkung bei Choice
2.) das DOS Fenster meines batchbleibt nach dem Start im Hintergrund. Ich würde eine Möglichkeit suchen, dass das Fenster mit der "echo "Bitte Pulver nehmen" alle 1-2 Minuten in den Vordergrund kommt um so etwas zu nerven.
3.) Ich muss natürlich ins LOG FIle schreiben, ob und wann ich die Pulver genommen hab ...

Gibt es da eine einfache Möglichkeit mit scripting Host, die nicht zu viel programmieraufwand ist?
Ich denke dass es mit scripting Host Bordmitteln ein 3-4 Zeiler wird, das zu machen, oder??
Wenn das wahr ist brauch ich eigenlich die Batch Datei nimmer

Welche Literatur würdest Du mir empfehlen, wenn ich wirklich anfangen möchte etwas zu scripten?
Gibt's da was für Einsteiger, behinnend mit "hello World" oder so ??
Bitte warten ..
Mitglied: pbelcl
19.06.2009 um 21:11 Uhr
Zitat von 76109:
Füge in Deiner Batch diesen Befehl mit Angabe der Zeit in
Sekunden ein
01.
> @cscript //nologo wait.vbs 600 
02.
> 
Danke DIeter für diesen Tipp. Ich habs nicht genau angesehen, aber so wie es aussieht kann man während der Wartezeit NICHT JA oder NEIN tippen. Wenn das stimmt dann ist das nicht optimal, denn ich muss ja während dieser Zeit die Möglichkeit haben Ja oder NEIN zu wählen.

Ich habe mein KOMPLETTES Batch gepostet dann ist es nicht so aus dem Zusammenhang gerissen
Bitte warten ..
Mitglied: pbelcl
19.06.2009 um 21:12 Uhr
@Destry
Danke für diesen Tipp, das mit SET /p hab ich nicht gewußt!
Werd ich ausprobieren ob mir das hilft ....
Bitte warten ..
Mitglied: 76109
19.06.2009 um 21:34 Uhr
Hallo pbelcl!

Zitat von pbelcl:
aber so wie es aussieht kann man während der Wartezeit NICHT JA oder NEIN tippen
Nein, das habe ich im Gegensatz zu "bastla" nicht bedacht und daher nur ein Warten nach der Abfrage angenommen.

Gruß Dieter
Bitte warten ..
Mitglied: bastla
19.06.2009 um 22:32 Uhr
Hallo pbelcl!

Als VBScript könnte das etwa so aussehen:
01.
Intervall = 120 'Sekunden bis zur nächsten Erinnerung 
02.
Dauer = 600 'Sekunden bis zum Versenden der Mail 
03.
Titel = "Bitte Pulver nehmen!" 'Fenstertitel 
04.
Sound = "sndrec32 /play /close C:\WINDOWS\Media\tada.wav" 'Pfad Sounddatei 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
Set Shell = CreateObject("Wscript.Shell") 
08.
LogFile = Replace(WScript.ScriptFullName, ".vbs", ".log") 
09.
Done = False 
10.
 
11.
Do 
12.
    Shell.Run Sound, 0, True 'Soundausgabe 
13.
    Text = "Zeit: " & Int(Dauer / 60) & " Minuten, sonst wird ein Erinnerungsmail verschickt." 
14.
    Antwort = Shell.PopUp(Text,Intervall,Titel,4) 'Popup 
15.
    Select Case Antwort 'PopUp-Ergebnis auswerten 
16.
        Case vbYes 'Ja 
17.
            fso.OpenTextFile(LogFile, 8, True).WriteLine _ 
18.
                Now & vbTab & "Pulver genommen" 
19.
            Done = True 
20.
        Case vbNo 'Nein 
21.
            fso.OpenTextFile(LogFile, 8, True).WriteLine _ 
22.
                Now & vbTab & "Pulver NICHT genommen" 
23.
            Done = True 
24.
        Case Else 'Zeitablauf 
25.
            Dauer = Dauer - Intervall 
26.
            If Dauer <= 0 Then 'Zeit abgelaufen, Mailversand 
27.
                Shell.Run "C:\Utils\gbmail -to mailadresse@domain.com -h smtp.domain.com -from pulver@domain.at -s ""Pulver nicht genommen""" 
28.
                fso.OpenTextFile(LogFile, 8, True).WriteLine _ 
29.
                    Now & vbTab & "Email zur WARNUNG verschickt" 
30.
                Done = True 
31.
            End If 
32.
    End Select 
33.
Loop Until Done
Die Pfade in den Zeilen 4 und 27 sind vermutlich noch anzupassen, und getestet habe ich nur unter XP Pro. Noch eine Anmerkung: Als Soundfile kannst Du kein ".mp3", sondern nur ".wav" verwenden.

Das Script wirst Du vermutlich per "Geplantem Task" starten; es läuft bis zur ersten Entscheidung "Ja" oder "Nein" bzw bis die in Zeile 2 angegebene Zeit in Sekunden erreicht ist.
Eine Literaturempfehlung habe ich leider nicht anzubieten, aber vielleicht findest Du unter den eingetragenen Links etwas Passendes (etwa gleich den zweiten)...

Grüße
bastla
Bitte warten ..
Mitglied: pbelcl
20.06.2009 um 08:19 Uhr
Danke Bastla für Deine Hilfe!!
Werde mir das Script in den nächsten Tagen mal genauer ansehen!

Danke auch für den Tipp, hab mal kurz da reingesehen. Der 2 .Link sieht sehr interessant aus.
Bitte warten ..
Mitglied: pbelcl
20.06.2009 um 08:20 Uhr
Zitat von 76109:
Nein, das habe ich im Gegensatz zu "bastla" nicht bedacht
und daher nur ein Warten nach der Abfrage angenommen.

Meine Frage war ja auch nicht unbedingt eindeutig definiert
Danke trotzdem für den Tipp!
Bitte warten ..
Mitglied: pbelcl
20.06.2009 um 14:20 Uhr
Hi Bastla,

Hab Dein Script gerade ausprobiert, läuft SUPER!!!!!!!

Ist es möglich statt dem Pfad "C:\utils\..."
01.
                Shell.Run "C:\Utils\gbmail -to mailadresse@domain.com -h smtp.domain.com -from pulver@domain.at -s ""Pulver nicht genommen"""
Eine von mir erstellte Systemvariable zu verwenden?
SO:
01.
                Shell.Run "%utildir%\gbmail -to mailadresse@domain.com -h smtp.domain.com -from pulver@domain.at -s ""Pulver nicht genommen"""
klappt es nicht, ich vermute es wird nicht ganz so trivial sein
Bitte warten ..
Mitglied: bastla
20.06.2009 um 15:57 Uhr
Hallo pbelcl!
ich vermute es wird nicht ganz so trivial sein
Halb so wild (insofern hätte ich das gleich einbauen sollen):
Shell.Run Shell.ExpandEnvironmentStrings("%utildir%") & "\gbmail -to mailadresse@domain.com -h smtp.domain.com -from pulver@domain.at -s ""Pulver nicht genommen"""
Grüße
bastla
Bitte warten ..
Mitglied: pbelcl
26.06.2009 um 07:20 Uhr
Nachdem ich's jetzt eine Woche verwendet habe, bin ich begeistert!

Hab noch einige "behübschungen" für das Logging eingebaut. Falls es wen interessiert, hier der Code wie es jetzt bei mir im Einsatz ist:
01.
Intervall = 900 'Sekunden bis zur nächsten Erinnerung 
02.
Dauer = 3600 'Sekunden bis zum Versenden der Mail 
03.
Titel = "!Pulver nehmen!" 'Fenstertitel 
04.
Sound = "sndrec32 /play /close C:\WINDOWS\Media\BP_Pulver.wav" 'Pfad Sounddatei 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
Set Shell = CreateObject("Wscript.Shell") 
08.
LogFile = Replace(WScript.ScriptFullName, ".vbs", ".log") 
09.
Done = False 
10.
 
11.
Do 
12.
    Shell.Run Sound, 0, True 'Soundausgabe 
13.
    Text = "Zeit: " & Int(Dauer / 60) & " Minuten, um Pulver zu nehmen, sonst wird ein SMS verschickt." 
14.
	fso.OpenTextFile(LogFile, 8, True).WriteLine _ 
15.
                Now & vbTab & "Pulveranforderung angezeigt" 
16.
    Antwort = Shell.PopUp(Text,Intervall,Titel,4) 'Popup 
17.
    Select Case Antwort 'PopUp-Ergebnis auswerten 
18.
        Case vbYes 'Ja 
19.
            fso.OpenTextFile(LogFile, 8, True).WriteLine _ 
20.
                Now & vbTab & "Pulver eingenommen " 
21.
            Done = True 
22.
        Case vbNo 'Nein 
23.
            fso.OpenTextFile(LogFile, 8, True).WriteLine _ 
24.
                Now & vbTab & "Pulver NICHT genommen, NEIN ausgewählt" 
25.
            Done = True 
26.
        Case Else 'Zeitablauf 
27.
            Dauer = Dauer - Intervall 
28.
            If Dauer <= 0 Then 'Zeit abgelaufen, Mailversand 
29.
                Shell.Run Shell.ExpandEnvironmentStrings("%utildir%") & "\gbmail -to <Mailadresse> -h smtp.domain.at -from pulver@domain.ata -s ""SMS - Pulver nicht genommen""" 
30.
                fso.OpenTextFile(LogFile, 8, True).WriteLine _ 
31.
                    Now & vbTab & "Pulveranforderung wurde ignoriert, SMS zur WARNUNG verschickt" 
32.
                Done = True 
33.
            End If 
34.
    End Select 
35.
Loop Until Done 
36.
	fso.OpenTextFile(LogFile, 8, True).WriteLine _ 
37.
               	Now & vbTab & "-----------------------------------------------"
Vielen Dank euch allen für die TIpps, besonders bastla, Du hast es echt drauf !
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MySql Set oConn sind 4 Sekunden zu lang?
Frage von zeroblue2005Datenbanken

Hallo Zusammen, wir haben einen alten Server 2k8 R2 am laufen mit: Apache/2.2.14 (Win32) DAV/2 mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 ...

Batch & Shell
PowerShell Choice Automatisieren
gelöst Frage von agowa338Batch & Shell2 Kommentare

Hallo, Ich habe hier ein als dll vorliegendes proprietäres cmdlet. Das Problem ist, ein Kommando blockiert mein Skript, weil ...

Microsoft Office
Teilergebnisberechnung 99 Prozent CPU
gelöst Frage von HanutaMicrosoft Office6 Kommentare

Hallo Zusammen, möchte im Office 365 Excel Teilergebnisse berechnenDas ganze funktioniert nicht wirklich, da meine CPU bei 99 % ...

Batch & Shell
Batch Choice funktioniert nicht
gelöst Frage von BuggerBatch & Shell5 Kommentare

Hallo, Ich habe folgenden Choice Befehl: Doch leider funktioniert es nicht so, wie es sollte. Punkt 1-9 funktioniert problemlos ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 15 StundenWindows 103 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 18 StundenAdministrator.de Feedback14 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...