2010-03-11 37 views
7

Tôi muốn sử dụng một kịch bản PowerShell windows để chạy một tập tin batch mỗi x số giây. Vì vậy, nó là cùng một tập tin thực thi được chạy hơn và hơn nữa.Chạy một tập tin batch mỗi x giây bằng PowerShell

Tôi đã thực hiện một số tìm kiếm nhưng không thể tìm thấy những gì tôi đang tìm kiếm. Đó là thứ mà tôi muốn chạy trên máy tính Windows   XP. Tôi đã sử dụng Windows Scheduler rất nhiều lần trước đây cho một cái gì đó tương tự, nhưng đối với một số lý do Windows Scheduler chỉ chạy một lần ... Sau đó không còn nữa. Tôi cũng không muốn có cuộc gọi tập tin thực thi chính nó, bởi vì nó sẽ bị lỗi sau khi nó chạy quá nhiều lần.

Trả lời

13

Chỉ cần đặt cuộc gọi đến tập tin thực thi trong một thời gian vòng lặp ví dụ:

$period = [timespan]::FromSeconds(45) 
$lastRunTime = [DateTime]::MinValue 
while (1) 
{ 
    # If the next period isn't here yet, sleep so we don't consume CPU 
    while ((Get-Date) - $lastRunTime -lt $period) { 
     Start-Sleep -Milliseconds 500 
    } 
    $lastRunTime = Get-Date 
    # Call your batch file here 
} 
+0

tuyệt vời ... cảm ơn vì sự giúp đỡ nhanh chóng .. hoạt động tuyệt vời – jvcoach23

+5

Keith, tại sao không chỉ 'while (1) {ngủ -sec 45; . \ script.ps1} '? – stej

+3

Điều đó phụ thuộc vào mục tiêu là chạy 'x' giây (giả sử ở đây tập tin thực thi mất ít hơn' x' giây để thực thi) HOẶC nếu chạy 20 giây một lần, ngủ 25, chạy một giây thời gian và mất 30 giây và sau đó ngủ 25. Sau đó, khoảng thời gian thay đổi (45 - 55 giây). Nếu điều đó không quan trọng, bằng mọi cách đơn giản hóa nó thành một giấc ngủ đơn giản. –

Các vấn đề liên quan