WinFuture-Forum.de: Programmüberwachung und wenn nötig Neustart - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Programmüberwachung und wenn nötig Neustart


#1 _The Grim Reaper_

  • Gruppe: Gäste

geschrieben 13. November 2010 - 16:43

Hi,

ich brauche ein Script oder gar ein Programm, welches zBsp aller 5 Minuten überprüft, ob ein gewissen Programm noch ausgefürht wird und wenn nicht, dieses neu startet. Das Programm ist buggy und soll normalerweise 24h laufen.

Stellt sich mir jetzt die Frage, wie ich soetwas realisieren kann :8): .

Viele Grüße TGR
0

Anzeige



#2 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 13. November 2010 - 17:43

programmcheck.cmd
@echo off
set ProgrammExe=notepad++.exe
set ProgrammPfad=E:\Notepad++
set zeitSek=300
cd /d "%ProgrammPfad%"
:refresh
set /a zeitMins=%zeitSek%/60
cls
tasklist|find "%ProgrammExe%">nul
if not errorlevel 1 echo Programm l„uft noch&goto :time
echo Programm wird gestartet...&start %ProgrammExe%
:time
echo Warte %zeitMins% Minuten...
ping localhost -n 60>nul
set /a zeitMins=%zeitMins%-1
if "%zeitMins%"=="0" goto :refresh
cls&goto :time

Dieser Beitrag wurde von d4rkn3ss4ev3r bearbeitet: 13. November 2010 - 17:44

0

#3 _The Grim Reaper_

  • Gruppe: Gäste

geschrieben 13. November 2010 - 19:02

Cool, doch kannst du bitte dahinter kurz kommentieren, was für was steht? Mir ist da nicht alles schlüssig :8):.
0

#4 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 13. November 2010 - 19:13

ProgrammExe=notepad++.exe ist der Name der Exe. Anderes Beispiel Firefox.exe Den fett markierten Eintrag musst du ändern. (Achja: Falls der Dateiname Leerzeichen enthalten sollte, so wie: Programm für Bilder.exe musst du davor und dahinter Anführungsstriche setzen, damit es so aussieht: "Programm für Bilder.exe"

ProgrammPfad=E:\Notepad++ da kommt der Pfad in der die exe liegt hin. Wieder nur das fett markierte brauchst du ändern. Hier brauchen keine Anführungsstriche hin, egal ob Leerzeichen drin sind oder nicht.

zeitSek=300 das sind deine 5 Minuten in Sekunden.

Mehr musst du nicht ändern, alles andere läuft dann von selbst. :8):
0

#5 _The Grim Reaper_

  • Gruppe: Gäste

geschrieben 13. November 2010 - 19:22

OK danke dir - das werd ich ausprobieren.

Und einmal gestartet läuft es im Hintergund dauerhaft durch?
0

#6 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 13. November 2010 - 19:31

Jup es läuft bis die Cmd von Hand geschlossen wird.
0

#7 _The Grim Reaper_

  • Gruppe: Gäste

geschrieben 14. November 2010 - 02:49

Mir ist gerade aufgefallen, dass das Prog nach der Ausführung noch eine Eingabe benötigt. Im meinem Falle einfach nur das Betätigen der Enter Taste, bevor es weiter läd. Google sagt, dass das nicht geht. Kann ich das iwie realisieren?
0

#8 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 14. November 2010 - 09:20

Dein Programm benötigt die Enter Taste oder wie? Das lässt sich meines Wissens nicht mit Batch realisieren, aber vielleicht kann jemand nen vbs Script oder sowas schreiben womit das möglich ist. Dann lässt sich das gut in die Batch einbauen.
0

#9 _The Grim Reaper_

  • Gruppe: Gäste

geschrieben 14. November 2010 - 09:45

Ja nicht nur, dass das doofe Programm immer abschmiert, es braucht beim Start auch eine Bestätigung. Ich drück hier einfach Enter und weiter gehts.
0

#10 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 14. November 2010 - 10:32

Habe grad was gefunden:

programmcheck.cmd
CODE
@echo off
set ProgrammExe=notepad++.exe
set ProgrammPfad=E:\Notepad++
set zeitSek=300
cd /d "%ProgrammPfad%"
:vbs
echo Set ws = CreateObject("WScript.Shell")>enter.vbs
echo ws.Run "runas.exe /user:%username% ""%ProgrammPfad%\%ProgrammExe%""", 1, False>>enter.vbs
echo Wscript.Sleep 5000>>enter.vbs
echo ws.SendKeys "{ENTER}">>enter.vbs
:refresh
set /a zeitMins=%zeitSek%/60
cls
tasklist|find "%ProgrammExe%">nul
if not errorlevel 1 echo Programm l„uft noch&goto :time
echo Programm wird gestartet...&start %ProgrammExe%&start enter.vbs
:time
echo Warte %zeitMins% Minuten...
ping localhost -n 60>nul
set /a zeitMins=%zeitMins%-1
if "%zeitMins%"=="0" goto :refresh
cls&goto :time


Die fettgedruckte Zahl ist die Zeit, die das Script warten soll bis Enter gedrückt wird. (in Millisekungen, also 5 Sekunden)
0

#11 _The Grim Reaper_

  • Gruppe: Gäste

geschrieben 14. November 2010 - 11:16

Es fragt bei mir nach der enter.vbs.
0

#12 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 14. November 2010 - 12:48

Hmm joa hab mal eine Zeile entfernt. Nun klappts.

CODE
@echo off
set ProgrammExe=notepad++.exe
set ProgrammPfad=E:\Notepad++
set zeitSek=300
cd /d "%ProgrammPfad%"
:vbs
echo Set ws = CreateObject("WScript.Shell")>enter.vbs
echo Wscript.Sleep 5000>>enter.vbs
echo ws.SendKeys "{ENTER}">>enter.vbs
:refresh
set /a zeitMins=%zeitSek%/60
cls
tasklist|find "%ProgrammExe%">nul
if not errorlevel 1 echo Programm l„uft noch&goto :time
echo Programm wird gestartet...&start %ProgrammExe%&start enter.vbs
:time
echo Warte %zeitMins% Minuten...
ping localhost -n 60>nul
set /a zeitMins=%zeitMins%-1
if "%zeitMins%"=="0" goto :refresh
cls&goto :time


Oder meinst du das die enter.vbs nicht gefunden wurde?
0

#13 _The Grim Reaper_

  • Gruppe: Gäste

geschrieben 14. November 2010 - 13:15

Ja er findet diese nicht. Im Quelltext ist auch ein Pfad für die Datei. Wenn es eine VB Bibliothek ist, muss nicht auf diese speziell verwiesen werden?

Dieser Beitrag wurde von The Grim Reaper bearbeitet: 14. November 2010 - 13:16

0

#14 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 14. November 2010 - 13:38

Nein eigentlich ist alles in Ordnung. Welches System nutzt du denn? Denn unter Win7 x64 funzt es als eingeschränkter User, sowie als Admin.
0

#15 _The Grim Reaper_

  • Gruppe: Gäste

geschrieben 14. November 2010 - 15:08

Windows 7 Pro x64.

Es kann die Datei nicht finden.
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0