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
3 Antworten
Sollen sich nur die Programme schließen oder auch die .bat datei?
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.
du gehst auf "speichern unter" dann wähst du dein Pfad aus und dann geh bei "Dateityp" auf "Alle Dateien" und änder das ".txt" zu ".bat"
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!
ich denke das könnte so aussehen
start <Programm.exe>
timeout /t 3600 /nobreak(
taskkill /f -im <Programm.exe>
eventuell am Ende noch ein pause setzen, aber das ist wahrscheinlich nicht zwingend nötig.
ist schonmal ein anfang.
wie sieht das in der praxis aus? irgendwelche * oder sonsitges?
t in sekunden?
und durch das entsteht eine endlosschleife?
bei mehreren programmen das kommando einfach mehrfahr reinschreiben?
Dadurch entsteht leider keine Endlosschleife... Schreib mal vor das Script ":loop" und danach "goto loop" dann geht's :)
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?