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
GELÖST

VBS - Sub soll um eine bestimme Uhrzeit gestartet werden

Frage Entwicklung VB for Applications

Mitglied: Fixu

Fixu (Level 1) - Jetzt verbinden

11.05.2009, aktualisiert 10:56 Uhr, 5748 Aufrufe, 14 Kommentare

Ich habe ein VBS Script welches um 2:00 Uhr einen Prozess killt und den selbigen um 3:00 wieder startet. Dies habe ich in einem Skript mit 2 Subs gelöst, Sub kill und Sub start. Beide sind in einem loop da es täglich ausgeführt wird und das Script immer im Hintergrund läuft. Damit dies mit der Zeitplanung hin kommt, arbeite ich mit einem Sleep. Dies ist aber sehr mühsam, da jedes Mal bei einem Neustart des Skripts die Sleepdauer neu ausgerechnet und eingetragen werden muss. Daher möchte ich dies via Uhrzeit steuern. Sprich, wenn die Systemzeit = 2:00 Uhr starte Sub kill, wenn Systemzeit = 3:00 starte Sub start. Wie kriege ich das hin in VBS?
Mitglied: 16568
11.05.2009 um 11:01 Uhr
MUHAHAHAHAHAHAHHAAHHAHAHA, selten so gelacht...

Frage: kennst Du den Taskplaner?

Machst Du 2x Script, eines für 2:00 Uhr, anderes für 3:00 Uhr...


Lonesome Walker
Bitte warten ..
Mitglied: Fixu
11.05.2009 um 11:05 Uhr
Grundsätzlich hast du Recht, es ist wie ein Task für den Tasklplaner. Aber auf der Maschine habe ich keine Berechtigung Tasks zu definieren, daher muss ich auf das VBS ausweichen. Und, lachst du noch immer? =)
Bitte warten ..
Mitglied: 60730
11.05.2009 um 11:06 Uhr
Servus,

entweder wie LSW schon schrieb zwei scripte - oder:

  • wenn Dienst aktiv stoppen - und weiter im Text
  • wenn DIenst gestoppt starten - und weiter im Text

PS: DIe Kombination von:
Ich habe ein VBS Script
Wie kriege ich das hin in VBS?

Wird Hier nicht gerne gesehen - wenn dann das Script - wobei es egal ist ob es sich um VBS/CMD oder Trallala² handelt
- nicht "dabei" ist.

Gruß
Bitte warten ..
Mitglied: Logan000
11.05.2009 um 11:43 Uhr
Moin Moin

Zitat von Fixu:
Grundsätzlich hast du Recht, es ist wie ein Task für den Tasklplaner.
Aber auf der Maschine habe ich keine Berechtigung Tasks zu definieren, daher muss ich auf das VBS ausweichen.
Und, lachst du noch immer? =)
Nun ich finde es zumindest erheiternd das du keine Task definieren darfst, aber Prozesse automatisch per Skript killen darfst.
Entweder du gibst deinen Account die Rechte oder du wendest dich an die Person die das darf.
Alles andere ist eher Klöterkram.

Gruß L.
Bitte warten ..
Mitglied: Fixu
11.05.2009 um 11:46 Uhr
Mit untem stehenden Skript wollte ich, dass bei erfolgreicher Übereinstimmung der Uhrzeit eine MsgBox kommt (diese würde nachher durch einen Sub Aufruf ersetzt). Jedoch funktioniert es nicht - ich nehme an es liegt an der Zeit Variable welche er nicht richtig interpretiert...

Option Explicit

Dim Zeit
Zeit="& time &"

Call Schleife

Sub Schleife
Do
Call Vergleich
loop
End Sub


Sub Vergleich
If Zeit = "11:41:30" Then
Info = MsgBox("Zeit ok", vbInformation, "Info")
else
end if
End Sub

Wscript.Quit
Bitte warten ..
Mitglied: 76109
11.05.2009 um 12:10 Uhr
Hallo Fixu,

also wenn schon, dann muss es so heissen:
01.
Zeit = "& time &"     Ergebnis = "& Time &" 
02.
Zeit = ""& time &""   Ergebnis = "Time"
Besser ist aber:
01.
If Time = CDate("11:41:30") Then
Gruß Dieter
Bitte warten ..
Mitglied: Fixu
11.05.2009 um 13:26 Uhr
Vielen Dank, habe das Ganze nun wie folgt gelöst:

Option Explicit

Dim objWMIService, objProcess, colProcess, WshShell
Dim strComputer, strProcessKill

Set WshShell = CreateObject("WScript.Shell")
strComputer = "."
strProcessKill = "'Datei.exe'"



Call Schleife

Sub Schleife
Do
wscript.sleep 1000
Call Vergleich
loop
End Sub

Sub Vergleich
If Time = CDate("02:00:00") Then
Call Kill
else If Time = CDate("03:00:00") Then
Call Start
End If End If
End Sub

Sub Kill
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
End Sub

Sub Start
WshShell.Run "Hier kommt die .exe rein"
End Sub

Wscript.Quit
Bitte warten ..
Mitglied: 76109
11.05.2009 um 13:43 Uhr
Hallo Fixu,

so wird das nicht funktionieren. Durch Dein Sleep, kannst Du keinen erfolgreichen Vergleich dürchführen.

In jedem Fall sollte ein Zeitfenster geprüft werden z.B.:

01.
If Time >= CDate("02:00:00") And <=  CDate("02:01:00") Then

Gruß Dieter
Bitte warten ..
Mitglied: Fixu
11.05.2009 um 13:55 Uhr
Hatte es vorhin mit Calc.exe getestet, da ging es problemlos. Den Sleep habe ich nur eingebaut, damit er nicht x mal pro Sekunde die Schlaufe durchgeht (CPU Auslastung) und den Wert 1000 musste ich nehmen da er mir sonst die Anwendung mehr als 1x gestartet hat.
Bitte warten ..
Mitglied: 76109
11.05.2009 um 14:15 Uhr
Hallo Fixu,

stimmt, dass hatte ich jetzt nicht bedacht.

Aber dann könnte ma ja mit Time eine Variable auf True/False setzen und diese wiederum gegenseitig zurücksetzen oder zu einem späteren Zeitpunkt beide zurücksetzen. Nur so ein Gedanke.

Gruß Dieter

PS. Bleibt auch noch die Möglichkeit mit Zeitfenster das ganze Script zu überspringen.
Bitte warten ..
Mitglied: LotPings
11.05.2009 um 15:40 Uhr
IMO ist doch nur eine zusätzliche Abfrage nötig,

Im Zeitfenster Killen wenn läuft,
Ausserhalb starten wenn nicht läuft.

01.
Option Explicit 
02.
 
03.
Dim objWMIService, objProcess, colProcess, WshShell 
04.
Dim strComputer, strProcessKill 
05.
Dim Anfang, Ende 
06.
Set WshShell = CreateObject("WScript.Shell") 
07.
strComputer = "." 
08.
strProcessKill = "'Datei.exe'" 
09.
Anfang = CDate("02:00:00") 
10.
Ende = CDate("03:00:00") 
11.
 
12.
Call Schleife 
13.
 
14.
Sub Schleife 
15.
  Do 
16.
    wscript.sleep 1000 
17.
    Call Vergleich 
18.
  loop 
19.
End Sub 
20.
 
21.
Sub Vergleich 
22.
  If ((Time >= Anfang) And (Time <= Ende)) 
23.
    Call Kill 
24.
  else 
25.
    Call Start 
26.
  End If 
27.
End Sub 
28.
 
29.
Sub Kill 
30.
  Set objWMIService = GetObject("winmgmts:" _ 
31.
    & "{impersonationLevel=impersonate}!\\" _ 
32.
    & strComputer & "\root\cimv2") 
33.
  Set colProcess = objWMIService.ExecQuery _ 
34.
    ("Select * from Win32_Process Where Name = " & strProcessKill ) 
35.
  For Each objProcess in colProcess 
36.
    objProcess.Terminate() 
37.
  Next 
38.
End Sub 
39.
 
40.
Sub Start 
41.
   Set objWMIService = GetObject("winmgmts:" _ 
42.
    & "{impersonationLevel=impersonate}!\\" _ 
43.
    & strComputer & "\root\cimv2") 
44.
  Set colProcess = objWMIService.ExecQuery _ 
45.
    ("Select * from Win32_Process Where Name = " & strProcessKill ) 
46.
  For Each objProcess in colProcess 
47.
    Exit Sub   ' Wenn Proc schon läuft brauchen wir nicht starten 
48.
  Next 
49.
 WshShell.Run "Hier kommt die .exe rein" 
50.
End Sub 
51.
 
52.
Wscript.Quit
Gruß
LotPings

Edit Zeile 24 geändert; falsches if Then entsorgt
Bitte warten ..
Mitglied: 76109
11.05.2009 um 17:54 Uhr
Hallo LotPings,

also, irgendwie steh ich jetzt auf 'm Schlauch

Die Funktion Kill und Start soll doch jeweils nur einmal ausgeführt werden oder?

und was ist bitte in Zeile 24:
01.
else If Then
ist das auch ein Trick, den ich nocht nicht kenne.

Gruß Dieter
Bitte warten ..
Mitglied: LotPings
11.05.2009 um 18:19 Uhr
Nö, da hat sich mein Editor vergaloppiert und ich habs nicht gemerkt, soll nur ein else sein. Ich ändere das oben.

Da das Script nach der Änderung ja prüft ob der Process läuft, wird auch nur einmal ausserhalb des Zeitfensters gestartet.

Umgekeht wird innerhalb des Zeitfensters ja kein Process mehr gefunden der gestoppt werden könnte wenn er nicht läuft.

Gruß
LotPings
Bitte warten ..
Mitglied: 76109
11.05.2009 um 18:42 Uhr
Hallo LotPings,

aja, hab ich doch glatt übersehen, dass Du den unteren Teil auch geändert hast


Gruß
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Windows 10 Batch für Datum und Uhrzeit setzen (18)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Batch & Shell
Cpl Dateien per Batch oder VBS öffnen (1)

Frage von Angelo131095 zum Thema Batch & Shell ...

VB for Applications
gelöst VBS Ordner erstellen - wenn nicht vorhanden! (1)

Frage von freshman2017 zum Thema VB for Applications ...

Datenbanken
Laufende Aufträge nach Uhrzeit auswerten (5)

Frage von BirdyB zum Thema Datenbanken ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (38)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...

Netzwerke
VPN-Server einrichten PPTPD-Einrichtung gescheitert (15)

Frage von MIlexx zum Thema Netzwerke ...