02-11-2007

Lệnh shutdown

1. Lệnh shutdown

Nghe tên các bạn đã thấy nhiệm vụ của lệnh này rồi. Đúng vậy, trong Windows nó được dùng để thực hiện các công việc tắt máy, khởi động lại, đăng xuất. Lệnh này thực chất là 1 tệp exe nằm trong thư mục C:\WINDOWS\System32.

Để tìm hiểu cú pháp của lệnh này, bạn mở Command Promt (vào Start\Run và gõ vào lệnh cmd), rồi gõ shutdown /? để liệt kê tất cả các tham số của lệnh và cách sử dụng. Bạn cũng có thể mở Help của Windows để truy tìm những thông tin liên quan đến lệnh này.

Cú pháp của nó như sau:

shutdown [-i | -l | -s | -r | -a] [-f] [-m computername] [-t xx] [-c "comment"] [-d up:xx:yy]

Có khá nhiều tham số cho lệnh, nhưng ở đây mình chỉ nhấn mạnh 1 vài điểm quan trọng sẽ được dùng trong chương trình của chúng ta:

-s: Tắt máy (viết tắt của shutdown)
-r: Khởi động lại (viết tắt của restart)
-l: Đăng xuất (viết tắt của logoff)
-t xx: Thời gian chờ, trong đó xx là thời gian phải đợi khi máy tắt (hoặc khởi động lại, đăng xuất) tính bằng giây
-c "comment": Thông báo hiện ra

Ví dụ như khi ta muốn hẹn tắt máy sau 30 giây, thì câu lệnh sẽ như sau:
shutdown -s -t 30

Còn muốn khởi động lại ngay lập tức thì:
shutdown -r -t 0

Chúng ta đã đi qua được nửa chặng đường rồi đó bạn. Quá đơn giản phải không? Bây giờ sẽ là những phần râu ria cho chương trình của chúng ta.

2. Những lệnh khác

Trước tiên phải nói đến lệnh echo, lệnh này có chức năng ẩn/hiện dòng lệnh của chúng ta, và giúp ta hiện ra một thông báo nào đó. Chẳng ai muốn khi chương trình chạy lại hiện ra dòng chữ shutdown -s -t 0 cả phải không? Người dùng chỉ muốn thấy kết quả của lệnh đó thôi, chứ quan tâm đến câu lệnh được gọi là gì đâu.

Muốn ẩn các câu lệnh, ta dùng lệnh: @echo off
Còn muốn hiện 1 thông báo nào đó ra màn hình, ta dùng lệnh: echo thông_báo

Bây giờ ta sẽ tìm hiểu lệnh dùng để nhập dữ liệu từ bàn phím vào. Đó chính là lệnh set. Cũng tương tự như ở trên, để tìm hiểu chi tiết về nó, bạn hãy mở Command Prompt và gõ set /? hoặc mở Help ra để tra nhé. Lệnh này có 2 chức năng chính là nhập dữ liệu và tính giá trị biểu thức. Ở đây, ta chỉ cần chức năng thứ 2, để nhận biết người dùng đã lựa chọn gì.

Giả sử màn hình lựa chọn của chúng ta như sau:

1. Tat may
2. Khoi dong lai
3. Dang xuat

Khi đó để nhận biết sự lựa chọn của người dùng (1, 2 hoặc 3) ta sẽ dùng lệnh sau:

set /p n=Ban hay nhap vao 1 hanh dong:

Lệnh này sẽ hiện ra dòng Ban hay nhap vao 1 hanh dong: và lấy giá trị nhập vào gán cho biến n. Bây giờ ta chỉ việc xử lí biến n mà thôi.

Sau khi biết được sự lựa chọn rồi, ta cần biết thêm thời gian chờ mà ta muốn là bao nhiêu. Để làm được điều đó, ta lại sử dụng lệnh set trên để nhập dữ liệu vào:

set /p sec=Thoi gian cho:

Khi đó thời gian chờ sẽ được gán cho biến sec. Cũng tương tự như thế, ta sẽ yêu cầu nhập vào lời thông báo bằng lệnh sau đây:

set /p msg=Thong bao:

Vậy là xong phần nhập dữ liệu.

Để xét các trường hợp mà n có thể xảy ra, ta cần đến câu lệnh lựa chọn if. Lệnh này cũng giống như trong các ngôn ngữ lập trình khác, có cú pháp khá đơn giản:

if điều_kiện lệnh
hoặc là
if điều_kiện lệnhj1 else lệnh 2

Đối với lệnh tắt máy hay khởi động lại thì cú pháp lệnh giống nhau trừ tham số -s và -r thôi. Riêng lệnh đăng xuất thì lại khác, vì đăng xuất sẽ không có thời gian chờ, và do đó sẽ không có tham số -t (tất nhiên sẽ không có -c luôn!). Cho nên khi dùng lệnh if để lựa chọn, ta cần chú ý điều này. Đoạn lệnh if sẽ như sau:

if %n% == 3 (tức chọn đăng xuất) goto :log (nơi xử lí lệnh đăng xuất)
Nhập thời gian chờ và thông điệp đối với lệnh tắt máy và khởi động lại
if %n% == 1 (tắt máy) (shutdown -s -t %sec% -c "%msg%") else (shutdown -r -t %sec% -c "%msg%")
goto :end (đến cuối chương trình để thoát)
:log (phần lệnh xử lí việc đăng xuất)
shutdown -l
:end

Trong đoạn lệnh trên có 2 nơi cần chú ý: một chỗ là biến n, sec được đặt giữa 2 dấu %. Đây chính là cách tham chiếu đến biến trong 1 tệp lệnh batch. Đó là quy ước và chúng ta phải nhớ. Hai là lệnh nhảy goto, lệnh này sẽ đưa chúng ta đến vị trí được đặt bởi nhãn (phía sau dấu 2 chấm). Chỉ đơn giản vậy thôi, phải không bạn?

3. Chương trình hoàn thiện

Chúng ta đã đi qua các bước để tạo thành chương trình rồi, bây giờ chỉ cần lắp ráp lại các phần thôi.

Đầu tiên là bảng lựa chọn và yêu cầu người dùng nhập vào lựa chọn của mình:

@echo off
echo Chuong trinh tat may tu dong
echo 1. Tat may
echo 2. Khoi dong lai
echo 3. Dang xuat
set /p n=Hay lua chon mot trong cac hanh dong tren:

Sau đó là đến phần xử lí lựa chọn của người dùng:

if %n%==3 goto :log
set /p sec=Nhap thoi gian cho:
set /p msg=Nhap thong bao:
if %n%==1 (shutdown -s -t %sec% -c "%msg%") else (shutdown -r -t %sec% -c "%msg%")
goto :end
:log
shutdown -l
:end

Và chương trình cuối cùng của chúng ta sẽ như sau:

@echo off
echo Chuong trinh tat may tu dong
echo 1. Tat may
echo 2. Khoi dong lai
echo 3. Dang xuat
set /p n=Hay lua chon mot trong cac hanh dong tren:
if %n%==3 goto :log
set /p sec=Nhap thoi gian cho:
set /p msg=Nhap loi chao tam biet:
if %n%==1 (shutdown -s -t %sec% -c "%msg%") else (shutdown -r -t %sec% -c "%msg%")
goto :end
:log
shutdown -l
:end

1 nhận xét:

  1. Cho minh` hoi~ chut xiu', minh` tao 1 file bat co noi dung la cho ng` dung` go~ 1 ten mien` thi lenh. se~ ping ra IP cua ten mien` do'. Ban viet code cho minh` tham khao
    Cam on

    Trả lờiXóa