bat datei zum öffnen und schließen?

3 Antworten

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

1991Geko 
Fragesteller
 01.08.2016, 23:31

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?

0
Neralem  01.08.2016, 23:32
@1991Geko

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

0
1991Geko 
Fragesteller
 01.08.2016, 23:33
@Neralem

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

0
sitius  02.08.2016, 00:49
@1991Geko

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.

0
MarkusGenervt  02.08.2016, 14:20
@sitius

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.

0
Pixipurgy907  24.07.2020, 16:16
@1991Geko

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"

0

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.

1991Geko 
Fragesteller
 01.08.2016, 23:27

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?

0
RipKali  02.08.2016, 00:07

Dadurch entsteht leider keine Endlosschleife... Schreib mal vor das Script ":loop" und danach "goto loop" dann geht's :)

0