2016-07-23 4 views
1

Ich habe diese Batch-Datei, die 4 cmds öffnet und dann zum entsprechenden Ordner geht und führt einige andere bat-Dateien aus, die dann Python-Skripte ausführen. Ich mag im GrundeÖffnen Sie den Schlafmodus und schließen Sie dann die Endlosschleife im Batch?

:loop 
start cmd.exe /k "cd C:\users\ivan\desktop\folder1 & call run.bat" 
start cmd.exe /k "cd C:\users\ivan\desktop\folder2 & call run.bat" 
start cmd.exe /k "cd C:\users\ivan\desktop\folder3 & call run.bat" 
start cmd.exe /k "cd C:\users\ivan\desktop\folder4 & call run.bat" 
goto loop 
diese Batchdatei

diese 4 cmds öffnen müssen und dann etwa 30 Minuten und in der Nähe warten und sie wieder öffnen, so würde es so etwas wie diese

:loop 
start cmd.exe /k "..." 
sleep(1800000) 
exit 
goto loop 
aussieht

Wer weiß, wenn das überhaupt möglich ist?

+0

Es gibt den 'timeout' Befehl, um den Schlaf zu machen; – aschipfl

+0

Mit "schließen" meinen Sie die damit verbundene Aufgabe zu töten? Wenn das der Fall ist, brauchen Sie einen Weg, um den richtigen Prozess zu identifizieren (durch den 'tasklist' Befehl), erhalten Sie seine PID und verwenden Sie diese für den' taskkill' Befehl; Eine Möglichkeit besteht darin, einen eindeutigen Fenstertitel anzugeben (nach 'title') und nach 'tasklist/V' und' find'/'findstr' zu suchen ... – aschipfl

+0

@aschipfl Ich habe fast alles herausgefunden aber Das Problem ist, dass ich taskkill nicht verwenden kann, da sich die Prozess-PID jedes Mal ändert, wenn ich die Batch-Datei neu starte. –

Antwort

1
start "RunBat" /d "C:\users\ivan\desktop\folder1" call run.bat 

beginnt run.bat in einem neuen Fenster mit dem Titel RunBat mit dem Arbeitsverzeichnis C:\users\ivan\desktop\folder1 (keine Notwendigkeit für einen cd Befehl)

timeout /t 1800 >nul 

hält die Ausführung für (30min * 60sec) 1800 Sekunden. (>nul: zeigen nicht den Timer)

schließlich

taskkill /fi "WINDOWTITLE eq RunBat*" 

tötet alle cmd Fenster, wo der Fenstertitel mit RunBat beginnt (diese Weise Sie nicht über die PIDs benötigen). (Geben Sie alle Ihre „Tochter Prozesse“ den gleichen Titel, so dass Sie alle mit einem einzigen taskkill Befehl töten oder sie einzigartige Titel, um sie separat zu töten)

Setzen Sie ein Label und ein goto herum, und du bist fertig.

Verwandte Themen