Lệnh at trong Windows

Áp dụng cho: Windows Server (Semi-Annual Channel), Windows Server 2016, Windows Server 2012 R2, Windows Server 2012.

Lệnh at lên lịch trình cho các lệnh và chương trình để chạy trên một máy tính vào một thời gian nhất định, với ngày tháng cụ thể. Bạn chỉ có thể sử dụng lệnh at khi Schedule service đang chạy. Nếu được sử dụng không có tham số, lệnh at sẽ liệt kê danh sách các lệnh được lên lịch.

Lệnh at trong Windows

Cú pháp

at [\\computername] [[id] [/delete] | /delete [/yes]]
at [\\computername] <time> [/interactive] [/every:date[,...] | /next:date[,...]] <command>

Tham số

Tham số Mô tả
\\<computerName> Chỉ định một máy tính từ xa. Nếu bạn bỏ qua tham số này, hãy lập lịch trình các lệnh và chương trình trên máy tính cục bộ.
<id> Chỉ định ID gán cho một lệnh được lập biểu.
/delete Hủy bỏ một lệnh theo lịch trình. Nếu bạn bỏ qua ID, tất cả các lệnh được lập lịch trên máy tính sẽ bị hủy.
/yes Trả lời có cho tất cả các truy vấn từ hệ thống, khi bạn xóa các sự kiện đã lên lịch.
<time> Chỉ định thời gian khi bạn muốn chạy lệnh. Thời gian được biểu thị bằng giờ:phút theo ký hiệu 24 giờ (nghĩa là, 00:00 [nửa đêm] đến 23:59).
/interactive Cho phép lệnh tương tác với desktop của người dùng đã đăng nhập tại thời điểm lệnh chạy.
/every: Chạy lệnh vào mỗi ngày hoặc ngày cụ thể trong tuần hoặc tháng (ví dụ: mỗi Thứ Năm, hoặc ngày thứ ba của mỗi tháng).
<date> Chỉ định ngày bạn muốn chạy lệnh. Bạn có thể chỉ định một hoặc nhiều ngày trong tuần (nghĩa là, nhập M, T, W, Th, F, S, Su) hay một hoặc nhiều ngày trong tháng (có nghĩa là, nhập từ 1 đến 31). Phân tách nhiều mục nhập ngày bằng dấu phẩy. Nếu bạn bỏ qua ngày, lệnh at sẽ sử dụng ngày hiện tại của tháng.
/next: Chạy lệnh vào lần xuất hiện tiếp theo trong ngày (ví dụ, thứ Năm tới).
<command> Chỉ định lệnh, chương trình Windows (có nghĩa là file .exe hoặc .com) hoặc chương trình batch (có nghĩa là file .bat hoặc .cmd) mà bạn muốn chạy. Khi lệnh yêu cầu đường dẫn làm đối số, hãy sử dụng đường dẫn tuyệt đối (nghĩa là toàn bộ đường dẫn bắt đầu bằng ký tự ổ đĩa). Nếu lệnh trên một máy tính từ xa, hãy chỉ định ký hiệu Universal Naming Convention (UNC) cho server và chia sẻ tên đó, thay vì dùng ký tự ổ đĩa từ xa.
/? Hiển thị trợ giúp tại dấu nhắc lệnh.

Ghi chú

  • schtasks là một công cụ lập kế hoạch dòng lệnh khác mà bạn có thể sử dụng để tạo và quản lý các tác vụ theo lịch trình. 
  • Để sử dụng lệnh at, bạn phải là thành viên của nhóm quản trị viên cục bộ.
  • Lệnh at không tự động load Cmd.exe, trình thông dịch lệnh, trước khi chạy lệnh. Nếu bạn không chạy file thực thi (.exe), bạn phải load Cmd.exe trước khi chạy lệnh như sau:
cmd /c dir > c:\test.out
  • Khi bạn sử dụng mà không có tùy chọn dòng lệnh, các tác vụ theo lịch sẽ xuất hiện trong bảng được định dạng tương tự như sau:
Status ID Day time Command Line OK 1 Each F 4:30 PM net send group leads status due OK 2 Each M 12:00 AM chkstor > check.file OK 3 Each F 11:59 PM backup2.bat
  • Khi bạn bao gồm số nhận dạng (ID) với lệnh at tại dấu nhắc lệnh, thông tin cho một mục nhập xuất hiện ở định dạng tương tự như sau:
Task ID: 1 Status: OK Schedule: Each F time of Day: 4:30 PM Command: net send group leads status due
  • Sau khi bạn lên lịch với lệnh at, đặc biệt là lệnh có tùy chọn dòng lệnh, hãy kiểm tra cú pháp lệnh chính xác bằng cách nhập at mà không có tùy chọn dòng lệnh. Nếu thông tin trong cột Command Line không chính xác, hãy xóa lệnh và nhập lại. Nếu nó vẫn không chính xác, hãy gõ lại lệnh với ít tùy chọn dòng lệnh hơn.
  • Các lệnh được lập biểu với lệnh at chạy dưới dạng các tiến trình nền. Output không được hiển thị trên màn hình máy tính. Để chuyển hướng output đến một file, hãy sử dụng biểu tượng chuyển hướng (>). Nếu bạn chuyển hướng đầu ra tới một file, bạn cần sử dụng biểu tượng thoát (^) trước biểu tượng chuyển hướng, cho dù bạn đang sử dụng lệnh at tại dòng lệnh hay trong file batch. Ví dụ, để chuyển hướng output đến Output.text, gõ:
at 14:45 c:\test.bat ^>c:\output.txt
  • Thư mục hiện tại cho lệnh thực thi là thư mục systemroot.
  • Nếu bạn thay đổi thời gian hệ thống tại một máy tính, sau khi bạn lên lịch một lệnh để chạy với at, hãy đồng bộ hóa trình lập lịch với thời gian hệ thống đã sửa đổi bằng cách gõ at mà không có tùy chọn dòng lệnh.
  • Các lệnh được lên lịch được lưu trữ trong registry. Do đó, bạn không bị mất các tác vụ theo lịch nếu bạn khởi động lại Schedule service.
  • Không sử dụng ổ đĩa được chuyển hướng cho các công việc đã lên lịch cần truy cập mạng. Schedule service có thể không truy cập được vào ổ đĩa đã được chuyển hướng hoặc ổ đĩa được chuyển hướng có thể không có mặt, nếu người dùng khác đăng nhập vào thời điểm tác vụ được lập biểu chạy. Thay vào đó, sử dụng đường dẫn UNC cho các công việc đã lên lịch. Ví dụ:
at 1:00pm my_backup \\\server\share

Không sử dụng cú pháp sau, trong đó x: là kết nối được thực hiện bởi người dùng:

at 1:00pm my_backup x:

Nếu bạn lên lịch một lệnh at sử dụng ký tự ổ đĩa để kết nối với một thư mục dùng chung, hãy bao gồm lệnh at để ngắt kết nối ổ đĩa, khi bạn không sử dụng nó nữa. Nếu ổ đĩa không bị ngắt kết nối, ký tự ổ đĩa được chỉ định không có sẵn tại dấu nhắc lệnh.

  • Theo mặc định, các tác vụ được lên lịch bằng cách sử dụng lệnh at sẽ dừng sau 72 giờ. Bạn có thể sửa đổi registry để thay đổi giá trị mặc định này.

1. Mở registry editor (regedit.exe).

2. Định vị và bấm vào key sau trong registry:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule

3. Trên menu chỉnh sửa, bấm Add Value, sau đó thêm giá trị registry sau:

Value Name: atTaskMaxHours Data type: reg_DWOrd Radix: Decimal Value Data: 0.

Giá trị 0 trong trường dữ liệu giá trị cho biết không có giới hạn, không dừng. Giá trị từ 1 đến 99 cho biết số giờ. Hãy thận trọng!

  • Việc chỉnh sửa registry không chính xác có thể làm hỏng hệ thống của bạn. Trước khi thực hiện thay đổi đối với registry, bạn nên sao lưu mọi dữ liệu có giá trị trên máy tính.
  • Bạn có thể sử dụng thư mục Task Scheduled để xem hoặc sửa đổi các thiết lập của một tác vụ đã được tạo bằng cách sử dụng lệnh at. Khi bạn lên lịch một tác vụ bằng lệnh at, nhiệm vụ được liệt kê trong thư mục Scheduled Tasks, với tên như sau: at3478. Tuy nhiên, nếu bạn sửa đổi một nhiệm vụ thông qua thư mục Task Scheduled, nó sẽ được nâng cấp thành một nhiệm vụ được lập lịch bình thường. Tác vụ không còn hiển thị với lệnh at và cài đặt tài khoản không còn áp dụng cho lệnh đó nữa. Bạn phải nhập một cách rõ ràng tài khoản người dùng và mật khẩu cho công việc.

Ví dụ

Để hiển thị danh sách các lệnh được lên lịch trên Marketing server, hãy nhập:

at \\marketing

Để tìm hiểu thêm về một lệnh với ID 3 trên Corp server, hãy nhập:

at \\corp 3

Để lên lịch một lệnh net share chạy trên Corp server vào lúc 8:00 sáng và chuyển hướng danh sách đến Maintenance server, trong thư mục được chia sẻ Reports và file Corp.txt, nhập:

at \\corp 08:00 cmd /c "net share reports=d:\marketing\reports >> \\maintenance\reports\corp.txt"

Để sao lưu ổ cứng của Marketing server vào ổ đĩa lúc nửa đêm, năm ngày một lần, hãy tạo một chương trình batch có tên là Archive.cmd, chứa các lệnh sao lưu và sau đó lên lịch để chạy chương trình batch, hãy nhập:

at \\marketing 00:00 /every:5,10,15,20,25,30 archive

Để hủy tất cả các lệnh được lên lịch trên server hiện tại, hãy xóa thông tin lịch biểu như sau:

at /delete

Để chạy một lệnh không phải là file thực thi (file .exe), thêm cmd /c trước lệnh để load Cmd.exe như sau:

cmd /c dir > c:\test.out

Xem thêm:

Thứ Ba, 21/08/2018 19:33
3,73 👨 175