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?

Frage Entwicklung Batch & Shell

Mitglied: pbelcl

pbelcl (Level 1) - Jetzt verbinden

19.06.2009, aktualisiert 14:19 Uhr, 4577 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
Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 StundeHumor (lol)2 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 16 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 17 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 19 StundenAdministrator.de Feedback10 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Linux
OpenSource Groupware
Frage von FA-jkaLinux13 Kommentare

Hallo, ich suche eine Groupware als Alternative zum Exchange. Wesentliche Aufgaben sind die Handhabung von E-Mails (persönliche und gemeinsam ...