Bộ lập lịch tác vụ Windows - Lên lịch tác vụ để chạy 15 phút sau khi hoàn thành tác vụ khác


2

Tôi có hai tác vụ được thiết lập trong Bộ lập lịch tác vụ Windows. Một cái được cho là chạy lúc 3:00 AM, và cái kia được cho là chạy 15 phút sau. Nếu máy tính tắt khi các tác vụ được lên lịch để chạy, thì các tác vụ được đặt thành chạy khi máy tính khởi động. Vấn đề với điều này là hai tác vụ không thể chạy cùng một lúc. Những gì tôi muốn làm là chờ đợi nhiệm vụ đầu tiên trong hai nhiệm vụ hoàn thành và sau khi hoàn thành, hãy đợi 15 phút trước khi nhiệm vụ thứ hai bắt đầu. Làm cách nào tôi có thể thiết lập tính năng này trong Trình lập lịch tác vụ? Tôi không thể thiết lập hệ thống cho tác vụ thứ hai để bắt đầu thực thi ngay khi thực hiện nhiệm vụ thứ nhất vì hai tác vụ không có gì khác hơn là các tệp bó gọi chương trình khác và hai điều mà các tệp bó đó thực hiện với chương trình không thể được thực hiện cùng một lúc. Vì nhiệm vụ đầu tiên chỉ mất 5 phút, tôi cần đưa ra một chút thời gian để nhiệm vụ thứ hai bắt đầu.


Có thể tệp bó đầu tiên không chỉ gọi tệp bó thứ hai ngay trước khi thoát?
panhandel

@panhandel Tôi nghĩ về điều đó rồi. Vấn đề là các tập tin thực thi bắt đầu chương trình và đóng cửa để giao diện điều khiển không vẫn mở. Cách nó được thiết lập, các tập tin thực thi thứ hai sẽ được gọi ngay lập tức một khi chương trình được mở ra.
DavidB

1
Hừm. Hip shot ở đây, nhưng lô "START / WAIT {cmd}" có lẽ? serverfault.com/questions/245393/
panhandel

@panhandel Tôi cố gắng để tìm một cách lý tưởng để làm điều này bằng cách sử dụng kích hoạt nhiệm vụ. Tôi đang tìm kiếm thông qua các tùy chọn (Trên một lịch trình, Trên một sự kiện, vv), nhưng tôi không biết làm thế nào để cấu hình bất kỳ trong số này để làm những gì nó là tôi đang cố gắng để làm.
DavidB

Hy vọng rằng "Tại" làm việc cho bạn. Tôi đã tìm thấy một khách hàng tiềm năng thú vị dựa trên việc truy vấn nhật ký sự kiện thông qua XML, nhưng một khi nhiệm vụ đầu tiên đã hoàn thành một lần, nó sẽ không bao giờ thực hiện nhiệm vụ thứ hai nữa - thêm ở đây: goo.gl/LtozZ4
panhandel

Câu trả lời:


2

Bạn đã có thể sử dụng Nhiệm vụ hoặc là Tại từ tệp bó và sắp xếp công việc 15 phút trong tương lai.


Tôi nghĩ rằng Scht nhiệm vụ có khả năng làm những gì tôi đang tìm kiếm, nhưng trang có quá nhiều thông tin về nó. Tôi nhìn vào At (không có ý định chơi chữ) và nó dường như không hữu ích.
DavidB

ss64.com/nt/scht task.html cần cung cấp thêm một số ví dụ "thực hành". Tại là một phiên bản hầu hết không dùng nữa, phần lớn còn lại để tương thích ngược.
JSanchez

Được rồi, cảm ơn! Đây là phương pháp mà tôi sẽ sử dụng!
DavidB

0

Tôi đánh giá cao điều này đã được đánh dấu là đã trả lời nhưng tôi có một yêu cầu trong kịch bản của mình khi tôi không thể sửa đổi tác vụ 'kích hoạt'.

Giải pháp là tạo một tác vụ với trình kích hoạt bộ lọc sự kiện tùy chỉnh kích hoạt khi tác vụ kích hoạt hoàn thành. Nguồn cho giải pháp này đến từ đây nhưng tôi đã giải thích phần chính bên dưới.

Trong Trình lập lịch tác vụ, chọn tác vụ kích hoạt và trong ngăn bên dưới, chọn tab Lịch sử. Giả sử nhiệm vụ này đã hoàn thành ít nhất một lần trước khi bạn có thể thấy một sự kiện với Danh mục nhiệm vụ đã hoàn thành. Nhấp chuột phải vào sự kiện Hoàn thành nhiệm vụ và chọn Thuộc tính sự kiện. Trong tab Chi tiết của cửa sổ Thuộc tính Sự kiện mở ra, hãy chọn Chế độ xem XML trông giống như thế này (có thể loại bỏ thông tin nhạy cảm):

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    <System>
        <Provider Name="Microsoft-Windows-TaskScheduler" Guid="{DE7B24EA-73C8-4A09-985D-5BDADCFA9017}" /> 
        <EventID>102</EventID> 
        <Version>0</Version> 
        <Level>4</Level> 
        <Task>102</Task> 
        <Opcode>2</Opcode> 
        <Keywords>0x8000000000000001</Keywords> 
        <TimeCreated SystemTime="2014-01-21T15:28:27.746689500Z" /> 
        <EventRecordID>978</EventRecordID> 
        <Correlation ActivityID="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" /> 
        <Execution ProcessID="10656" ThreadID="11656" /> 
        <Channel>Microsoft-Windows-TaskScheduler/Operational</Channel> 
        <Computer>XXXXXXXXXXXXXXXXXXXXXXXXXX</Computer> 
        <Security UserID="S-X-X-XX-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-XXX" /> 
    </System>
    <EventData Name="TaskSuccessEvent">
        <Data Name="TaskName">\ping</Data> 
        <Data Name="UserContext">XXXXXXXXXX\XXXXXXXXXXXXX</Data> 
        <Data Name="InstanceId">{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</Data> 
    </EventData>
</Event>

Trình kích hoạt tùy chỉnh bạn cần viết về cơ bản là một biểu thức XPath đánh giá bộ lọc phù hợp với sự kiện Hoàn thành nhiệm vụ của tác vụ kích hoạt. Với tác vụ có tên "ping", kích hoạt sẽ là:

<QueryList>
  <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
    <Select Path="Microsoft-Windows-TaskScheduler/Operational">*[EventData[@Name='TaskSuccessEvent'][Data[@Name='TaskName']='\ping']]</Select>
   </Query>
</QueryList>

Trong cửa sổ Chỉnh sửa kích hoạt, sau đó bạn có thể đặt 'Nhiệm vụ trễ trong: 15 phút' để đạt được kết quả mong muốn mà không cần phải sửa đổi tác vụ gốc.

Có rất nhiều XPath khác mà người ta có thể viết để tạo ra các trình kích hoạt fancier. Điều này bài viết trên blog cung cấp thêm một chút thông tin và điều này Tài liệu Microsoft có vẻ như là một khởi đầu tốt để đọc sâu hơn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.