Назад | Перейти на главную страницу

Остановить и запустить командный файл каждый час

У меня есть пакетный сценарий, который запускает программу, запускаемую в cmd.exe. Я попытался использовать планировщик задач для создания задачи, которая останавливает эту оболочку cmd и запускает новую каждый час, но безрезультатно. Есть ли другие способы останавливать и запускать один и тот же cmd и пакетный скрипт каждый час?

Я попытался сделать еще одну партию со следующим:

Taskkill /IM cmd.exe

и планирование его запуска каждый час, но поскольку этот пакет также запускается в оболочке cmd, он просто убивает себя, а не ранее запущенную оболочку cmd.

Любая помощь в остановке и перезапуске той же оболочки cmd каждые x интервалов будет принята с благодарностью.

С уважением

Шаолинь

РЕДАКТИРОВАТЬ:

Причина, по которой я хочу перезапускать эту программу каждые x интервалов, заключается в том, что эта конкретная программа имеет тенденцию зависать, она может зависать через 10 минут или 10 часов. В качестве меры предосторожности я бы хотел, чтобы он перезапускался каждый час.

Немного непонятно, чего вы пытаетесь достичь и почему, но я думаю, что пакетный скриптинг - неподходящий инструмент для работы (особенно в 2013 году).

Powershell даст вам гораздо более предсказуемые результаты и позволит обеспечить гораздо лучшую надежность, например:

$application = "C:\Windows\System32\notepad.exe"
$sleepTime = 10
$i = 1

while ($i = 1){
    Write-Host "Starting Process"
    $process = Start-Process $application -PassThru

    Write-Host "Waiting " $sleepTime "seconds"
    Start-Sleep -Seconds $sleepTime

    if(!$process.HasExited){
        Write-Host "Killing Process"
        $process.Kill()
    }else{
        echo "Process had already ended"
    }

    Start-Sleep -Seconds 2
}

Хотя я почти уверен, что должен быть лучший ответ, чем использование бесконечного цикла.

Это больше похоже на логическую проблему. В пакетном сценарии вы можете ввести exit, чтобы закрыть окно cmd в логике. В противном случае вы можете посмотреть на использование stop-process и start-process в PowerShell. Я бы сказал, что нам нужно немного больше информации, «почему» вам нужно новое окно cmd каждый час.

У вас должна быть возможность добавить / IF "CPUTIME gt 00:30:00"

taskkill /IM cmd.exe /IF "CPUTIME gt 00:29:00"