Frage von 1991Geko, 71

bat datei zum öffnen und schließen?

Hallo,

würde gerne eine bat datei (vermute ich mal) erstellen, wo folgendes passieren soll:

ca. 6 programma ausführen, nach ca. 1 stunde sollen diese geschlossen werden, und direkt danach wieder neugestartet werden. quasi ein loop, bis man den loop händisch oder mit einem befehl wieder beendet.

kann mir da jemand helfen? -kenne mich leider gar nicht aus, weiß nur , dass ich die kommandos in den editor reinschreiben muss, und anschließend die datei in .bat unbennenen muss.

benutze übrigends windows 10. mfg

Antwort
von 0b3rp3d0, 57

Sollen sich nur die Programme schließen oder auch die .bat datei?

Kommentar von 1991Geko ,

wär eigentlich egal. wichtig ist, dass die programme nach dem schließen wieder geöffnet werden.

noch eine kurze frage: wie mache ich aus der texdatei die "bat" datei?

Kommentar von Neralem ,

Einfach die Dateiendung von .txt zu .bat ändern.

Kommentar von 1991Geko ,

so hätt ichs auch in erinnerung, jedoch passiert da nichts.

Kommentar von sitius ,

Wenn du dir im Explorer nicht die Dateiendung anzeigen lässt, ändert sich da auch nichts. Dann änderst praktisch nur den Namen.

Im Editor auf "Speichern unter", dann den Dateityp auf "Alle Dateien" stellen und das .txt gegen ein .bat austauschen.

Kommentar von MarkusGenervt ,

Außerdem muss der Datei-Typ in "Alle Dateien (*.*)" geändert werden, sonst fügt Notepad/Editor immer eine ".txt"-Endung an und die Datei wird nie als Batch interpretiert/ausgeführt.

Antwort
von MarkusGenervt, 55

Ein Batch-Skript wird nie wirklich im Hintergrund laufen. Man kann es minimieren, aber da es linear läuft, wird es ständig im Vordergrund viel Ressourcen beanspruchen.

Außerdem musst Du zum manuellen Beenden erst das Skript unterbrechen ([STRG]+[C]) damit es Deine Programme nicht wieder aus dem "Hintergrund" startet.

Für den 6-Stunden-Timer wäre es folgendermaßen weniger "aufdringlich":

  • Ein Batch-Skript erstellen, dass erst die Programme beendet (wenn keines gestartet wurde, passiert auch nichts), kurz wartet und dann die Programme wieder startet. 
  • Einen Job (Aufgabe) im Taskplaner (Aufgabenplanung) erstellen, welche alle 6 Stunden dieses Skript startet.

Skript:

@echo off
setlocal
set ProgList="prog1" "prog2" "prog3" [...]
for %%P in (%ProgList%) do (
taskkill /f /t /im "%%~P"
)
timeout /t 60 /nobreak

for %%P in (%ProgList%) do (

start "%%~P"
)

Aber Vorsicht:
Der hier verwendete Befehl "taskkill" wird ALLE Programme mit dem gleichen Namen beenden! Wenn also noch andere Programm-Instanzen des gleichen Namens laufen sollen, wird es hiermit nicht mehr reichen.

Die "for"-Befehle können auch in einer Zeile geschrieben werden, ohne die Klammern nach "do". Ich habe es der Übersichtlichkeit und Erweiterbarkeit wegen so strukturiert.


Im Taskplaner-Job erstellst Du dann einen Programm-Aufruf für das Skript und lässt diesen Task alle 6 Stunden wiederholen, ohne ein End-Datum anzugeben.


Et voilà, c'est ça!

Keine passende Antwort gefunden?

Fragen Sie die Community