Cách xóa một biến đã đặt trên dòng lệnh. Phân loại các biến môi trường

12/02/15 21.1K

Tại sao thế giới lại có sự hỗn loạn như vậy? Có, bởi vì quản trị viên hệ thống của chúng tôi đã quên hoàn thành nhiệm vụ của mình. Hoặc tôi vừa mất danh sách lệnh cmd từ thế giới của chúng tôi. Mặc dù đây là một cái nhìn hơi nguyên bản về trật tự hiện có của mọi thứ, nhưng nó vẫn phản ánh một phần sự thật mà chúng ta cần: bằng cách sử dụng dòng lệnh, bạn có thể dễ dàng sắp xếp trật tự cho máy tính của mình:

Dòng lệnh là gì

Dòng lệnh là công cụ đơn giản nhất để quản lý hệ điều hành máy tính của bạn. Điều khiển xảy ra bằng cách sử dụng một số lệnh và bộ ký tự dành riêng bàn phím văn bản không có chuột ( V. hệ điều hành các cửa sổ).

Trên các hệ thống dựa trên UNIX, bạn có thể sử dụng chuột khi làm việc với dòng lệnh.

Một số lệnh đến với chúng tôi từ MS-DOS. Dòng lệnh còn được gọi là console. Nó không chỉ được sử dụng để quản lý hệ điều hành mà còn để quản lý chương trình thường xuyên. Thông thường, các lệnh hiếm được sử dụng nhất đều được bao gồm trong bộ lệnh này.

Lợi thế ứng dụng cmd lệnh chính là nó tiêu thụ một lượng tài nguyên hệ thống tối thiểu. Và điều này quan trọng khi tình huống khẩn cấp, khi tất cả sức mạnh của máy tính, bằng cách này hay cách khác, đều có liên quan.

cmd triển khai khả năng thực thi và tạo toàn bộ các tệp bó, một trật tự nhất định thực hiện một số lệnh (tập lệnh). Nhờ đó, chúng có thể được sử dụng để tự động hóa một số tác vụ nhất định ( quản lý tài khoản, lưu trữ dữ liệu và hơn thế nữa).

Shell lệnh Windows để thao tác và chuyển hướng các lệnh đến một số công cụ và tiện ích hệ điều hành nhất định là trình thông dịch Cmd.exe. Nó tải bảng điều khiển và chuyển hướng các lệnh theo định dạng mà hệ thống hiểu được.

Làm việc với dòng lệnh trong hệ điều hành Windows

Bạn có thể gọi bàn điều khiển trong Windows theo nhiều cách:


Cả hai phương pháp đều liên quan đến việc chạy bảng điều khiển với tư cách là người dùng hiện tại. Nghĩa là, với tất cả các quyền và hạn chế được áp đặt đối với vai trò của nó trong hệ điều hành. Vì khởi chạy cmd với quyền quản trị viên, bạn cần chọn biểu tượng chương trình trong menu Bắt đầu và trong danh mục chọn mục thích hợp:


Sau khi chạy tiện ích, bạn có thể nhận được thông tin lai lịch về các lệnh và định dạng để viết chúng trong bảng điều khiển. Để thực hiện việc này, hãy nhập câu lệnh trợ giúp và nhấn “Enter”:

Các lệnh cơ bản để làm việc với tập tin và thư mục

Các lệnh được sử dụng thường xuyên nhất là:

  • RENAME – đổi tên thư mục và tập tin. Cú pháp lệnh:

ĐỔI TÊN | REN [ổ đĩa/đường dẫn] tên tệp/thư mục gốc | tên tập tin cuối cùng
Ví dụ: ĐỔI TÊN C:UsershomeDesktoptost.txt test.txt

  • DEL (ERASE) – chỉ dùng để xóa tập tin, không xóa thư mục. Cú pháp của nó là:

DEL | XÓA [phương pháp xử lý] [tên tệp]
Ví dụ: Del C:UsershomeDesktoptest.txt/P

Bằng phương pháp xử lý, chúng tôi muốn nói đến một lá cờ đặc biệt cho phép bạn thực hiện một điều kiện nhất định khi xóa tệp. Trong ví dụ của chúng tôi, cờ “P” cho phép hiển thị hộp thoại cấp phép để xóa từng tệp:


Bạn có thể tìm thêm thông tin chi tiết về các giá trị có thể có của tham số “phương thức xử lý” trong tài liệu kỹ thuật trên hệ điều hành Windows.

  • MD – cho phép bạn tạo một thư mục theo đường dẫn đã chỉ định. Cú pháp:

MD [ổ đĩa:] [đường dẫn]
Ví dụ:
MD C:Người dùnghomeDesktoptest1test2

Ví dụ sẽ tạo thư mục con test2 trong thư mục test1. Nếu một trong các thư mục gốc của đường dẫn không tồn tại, nó cũng sẽ được tạo:

  • RD ( RMDIR) – xóa thư mục cụ thể hoặc tất cả các thư mục trong đường dẫn đã chỉ định. Cú pháp:

RD | RMDIR [process_key] [ổ đĩa/đường dẫn]
Ví dụ:
rmdir /s C:UsershomeDesktoptest1test2

Ví dụ này sử dụng cờ s, điều này sẽ khiến toàn bộ nhánh thư mục được chỉ định trong đường dẫn bị xóa. Vì vậy, bạn không nên sử dụng nó một cách không cần thiết lệnh rmdir với khóa xử lý này.

Trong phần tiếp theo, chúng ta sẽ xem xét kỹ hơn các lệnh cmd mạng.

Các lệnh làm việc với mạng

Dòng lệnh cho phép bạn kiểm soát không chỉ hệ thống tập tin PC, mà còn của anh ấy các cơ hội kết nối. Phần lệnh mạng bao gồm bảng điều khiển một số lượng lớn nhà khai thác để giám sát và kiểm tra mạng. Có liên quan nhất trong số đó là:

  • ping - lệnh được sử dụng để giám sát khả năng Kết nối mạng MÁY TÍNH. Đến một máy tính từ xa một số lượng gói nhất định sẽ được gửi và sau đó gửi lại. Thời gian truyền của các gói và phần trăm tổn thất được tính đến. Cú pháp:

ping [-t] [-a] [-n bộ đếm] [-l size] [-f] [-i TTL] [-v type] [-r bộ đếm] [-s bộ đếm] [(-j Host_list | - k node_list)] [-w interval] [target_PC_name]

Ví dụ thực hiện lệnh:
ví dụ ping.microsoft.com
ping –w 10000 192.168.239.132

Cuối cùng ví dụ cmd Lệnh ping gửi yêu cầu đến người nhận có địa chỉ IP được chỉ định. Khoảng thời gian chờ giữa các gói là 10.000 (10 giây). Theo mặc định, tham số này được đặt thành 4000:

  • tracert - được sử dụng để xác định đường dẫn mạng đến một tài nguyên được chỉ định bằng cách gửi tin nhắn echo đặc biệt thông qua giao thức
  • ICMP (Giao thức tin nhắn điều khiển). Sau khi chạy lệnh với các tham số, danh sách tất cả các bộ định tuyến mà thông báo đi qua sẽ được hiển thị. Phần tử đầu tiên trong danh sách là bộ định tuyến đầu tiên ở phía tài nguyên được yêu cầu.

Cú pháp lệnh tracer cmd:
tracert [-d] [-h max_hop_number] [-j node_list] [-w interval] [target_resource_name]
Ví dụ thực hiện:
tracert -d -h 10 microsoft.com

Ví dụ này theo dõi tuyến đường tới một tài nguyên được chỉ định. Điều này làm tăng tốc độ hoạt động do sử dụng tham số d, điều này ngăn lệnh cố gắng lấy quyền đọc địa chỉ IP. Số lần chuyển tiếp (nhảy) được giới hạn ở 10 khi sử dụng đặt giá trị tham số h. Theo mặc định, số lần nhảy là 30:


tắt máy [(-l|-s|-r|-a)] [-f] [-m [\PC_name]] [-t xx] [-c “tin nhắn”] [-d[u][p]: xx:yy]
Ví dụ:
tắt máy /s /t 60 /f /l /m \191.162.1.53

PC từ xa (m) có địa chỉ IP được chỉ định (191.162.1.53) sẽ tắt (các) sau 60 giây (t). Điều này sẽ buộc bạn phải đăng xuất khỏi tất cả các ứng dụng (f) và phiên của người dùng hiện tại (l).

Các biến môi trường được sử dụng trong các tệp bó (lệnh) cho phép bạn tránh chỉ định đường dẫn tuyệt đối tới các thư mục. Ví dụ, nếu chúng ta không biết trước chữ cái đĩa hệ thống, chúng ta luôn có thể sử dụng một biến %ổ đĩa hệ thống%, trả về ký tự ổ đĩa mà hệ điều hành được cài đặt. Ngoài ra, các biến được sử dụng để tối ưu hóa mã - một tham số lặp lại nhiều lần (ví dụ: khóa đăng ký) có thể được gán một biến ngắn và được sử dụng. Bài viết này thảo luận chi tiết các kỹ thuật khác nhau để làm việc với các biến, cũng như các cách thay đổi và tạo các biến mới. Bây giờ hãy nói về mọi thứ theo thứ tự.

Phân loại các biến môi trường

Bản tóm tắt

Đội Vỏ Windows(cmd.exe) khá công cụ đắc lực làm việc với hệ thống. Các tệp hàng loạt có thể tự động hóa một lượng lớn tác vụ, đó là lý do tại sao chúng thường được sử dụng để cài đặt tự động Các cửa sổ. Việc sử dụng khéo léo các biến trong tệp bó cho phép bạn giải quyết nhiều vấn đề. Làm việc với shell lệnh trở nên hiệu quả hơn và đồng thời mã cho các tệp batch được đơn giản hóa. Bạn có thể tìm thấy các ví dụ khác về cách sử dụng biến trên các trang của trang web hoặc diễn đàn. Tất cả các ví dụ được sử dụng trong bài viết này đều được lấy từ kịch bản của những người tham gia, xin cảm ơn họ rất nhiều.

Thuật ngữ

Vỏ lệnh- cái này riêng biệt phần mềm, cung cấp giao tiếp trực tiếp giữa người dùng và hệ điều hành. Chữ giao diện người dùng dòng lệnh cung cấp một môi trường trong đó các ứng dụng và tiện ích Với giao diện văn bản.

cmd.exe- trình thông dịch lệnh mà shell lệnh của hệ điều hành Windows sử dụng để dịch lệnh đã nhập sang định dạng mà hệ thống có thể hiểu được.

Phiên họp nhóm có thể được bắt đầu bằng cách khởi chạy cmd.exe, và phóng tập tin hàng loạt. Nói cách khác, shell lệnh hiện tại được tạo. Theo đó, việc thoát khỏi shell này (ví dụ như hoàn thiện một file batch) sẽ kết thúc phiên lệnh.

Phiên người dùng (phiên người dùng) bắt đầu khi người dùng đăng nhập (đăng nhập) và kết thúc khi người dùng đăng xuất (đăng xuất).

    Nhóm BỘđược sử dụng để xem và thay đổi biến môi trường môi trường ở dòng lệnh Các cửa sổ. Biến môi trường là các biến có giá trị được chấp nhận đặc trưng cho môi trường trong đó chương trình hiện tại- cách tập tin hệ thống, thông tin phần cứng, thư mục người dùng, v.v. Các giá trị biến môi trường được tạo ra trong quá trình Khởi động Windows, đăng ký người dùng trong hệ thống, khi thực hiện các quy trình riêng lẻ hoặc sử dụng lệnh BỘ. Để xem giá trị được giả định bởi một biến cụ thể, bạn có thể sử dụng lệnh:

biến BỘ
THIẾT LẬP ĐƯỜNG DẪN- Hiển thị giá trị của biến CON ĐƯỜNG
Để tạo một biến mới hoặc thay đổi giá trị của biến hiện có, hãy sử dụng lệnh:

SET biến = chuỗi

Biến đổi- Tên biến môi trường.
đường kẻ- Một chuỗi ký tự được gán cho biến được chỉ định.

ĐẶT Tên tôi=Vasya- thiết lập giá trị của một biến Tên của tôi

SET path=C:\progs;%path%- thay đổi giá trị của biến CON ĐƯỜNG bằng cách thêm vào đầu dòng C:\progs

Giá trị được biến chấp nhận có sẵn để xử lý trong tệp lệnh bằng cách sử dụng tên của nó được đặt trong dấu phần trăm - % . Ví dụ: lệnh hiển thị văn bản trên màn hình ECHO có dạng:

ngày ECHO- sẽ hiển thị từ "ngày" và lệnh
ECHO %ngày% sẽ hiển thị giá trị của biến ngày, I E. ngay hiện tạiở định dạng hệ điều hành.

Đội BỘ không có tham số được sử dụng để hiển thị giá trị hiện tại của các biến môi trường.

ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Usr\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
TÊN MÁY TÍNH=TEST7
ComSpec=C:\windows\system32\cmd.exe
FP_NO_HOST_CHECK=KHÔNG
HOMEDRIVE=C:
HOMEPATH=\Người dùng\Usr
LOCALAPPDATA=C:\Users\Usr\AppData\Local
MÁY CHỦ ĐĂNG NHẬP=\\TEST7
NUMBER_OF_PROCESSORS=2
HĐH=Windows_NT
Đường dẫn=C:\windows\system32;C:\windows;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS; .VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Dòng 15 Model 3 Bước 4, Intel chính hãng
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0304
ProgramData=C:\ProgramData
ProgramFiles=C:\Tệp chương trình
NHẮC NHẬN=$P$G
PSModulePath=C:\windows\system32\Windows PowerShell\v1.0\Modules\
CÔNG CỘNG=C:\Users\Công khai
SystemDrive=C:
SystemRoot=C:\windows
TEMP=C:\Users\Usr\AppData\Local\Temp
TMP=C:\Users\Usr\AppData\Local\Temp
NGƯỜI DÙNG=test7
TÊN NGƯỜI DÙNG=Usr
USERPROFILE=C:\Users\Usr
Windir=C:\windows

Ngoài các biến được hiển thị trong danh sách khi gọi lệnh SET, còn có các biến khác có giá trị thay đổi linh hoạt:

%ĐĨA CD%- lấy giá trị của thư mục hiện tại.
%NGÀY%- lấy giá trị của ngày hiện tại.
%THỜI GIAN%- lấy giá trị của thời điểm hiện tại.
%NGẪU NHIÊN%- nghĩa số ngẫu nhiên trong khoảng từ 0 đến 32767.
% LỖI%- giá trị hiện tại của ERRORLEVEL, một biến đặc biệt được sử dụng làm chỉ báo kết quả thực hiện chương trình.
%CMDEXTVERSION% CMD.EXE mở rộng giá trị phiên bản xử lý lệnh.
%CMDCMDLINE%- mở rộng đến dòng lệnh ban đầu được gọi là shell.

Nếu bạn chỉ chỉ định một phần tên khi gọi lệnh SET, danh sách các biến có tên bắt đầu bằng chuỗi đã chỉ định sẽ được hiển thị. Ví dụ:

THIẾT LẬP BẠN- sẽ hiển thị giá trị của tất cả các biến có tên bắt đầu bằng "U".

Lệnh SET hỗ trợ hai công tắc bổ sung:

biểu thức SET /A

Biến SET /P=

Khóa chuyển đổi /A chỉ định rằng chuỗi bên phải dấu bằng là một biểu thức số có giá trị đang được đánh giá. Trình xử lý biểu thức rất đơn giản và hỗ trợ hoạt động sau đây, được liệt kê theo thứ tự ưu tiên giảm dần:

Khi sử dụng bất kỳ toán tử logic hoặc nhị phân nào, bạn phải đặt chuỗi biểu thức trong dấu ngoặc kép. Bất kỳ chuỗi không phải số nào trong biểu thức đều được coi là tên biến môi trường có giá trị được chuyển đổi sang dạng số trước khi sử dụng. Nếu một biến có tên được chỉ định không được xác định trong hệ thống thì giá trị null sẽ được thay thế. Điều này cho phép bạn thực hiện các phép tính toán học với các giá trị biến môi trường mà không cần phải nhập dấu % để lấy giá trị. Nếu SET /A được gọi từ dòng lệnh chứ không phải từ tệp bó, nó sẽ in giá trị cuối cùng của biểu thức. Tên của biến môi trường phải xuất hiện ở bên trái của bất kỳ toán tử gán nào. Giá trị sốđược coi là số thập phân trừ khi có tiền tố đứng trước:

0x- đối với số thập lục phân
0 - Vì số bát phân.

Ví dụ về việc sử dụng tiền tố:

BỘ /A REZ=0xA+012
Tiếng vang %REZ%

Trong tệp bó này, giá trị của biến là REZđược tính bằng cách cộng số 10 được biểu thị bằng hệ thập lục phân (0xA) và số 10 được biểu thị bằng bát phân (012).

Công tắc /P cho phép bạn đặt giá trị của biến cho chuỗi đầu vào do người dùng nhập. Hiển thị lời nhắc của chuỗi nhắc nhở được chỉ định trước khi đọc chuỗi đã nhập. Dấu nhắc nhắcString có thể trống. Chìa khóa này cho phép bạn tổ chức một cuộc đối thoại với người dùng trong một tệp bó:

@ECHO TẮT
SET /P NAME=Nhập tên người dùng:
SET /P pass=Nhập mật khẩu:
Tên người dùng ECHO - %NAME% , Mật khẩu - %PASS%

Trong các tệp bó, bạn thường cần phải làm việc với một phần giá trị được lấy bởi một biến mà bạn sử dụng các giá trị thay thế:

biến: string1=string2- thay thế giá trị nhận được của biến dòng 1 TRÊN dòng 2

Kế tiếp tập tin hàng loạt sử dụng thay thế ký tự dấu chấm bằng ký tự dấu gạch ngang trong giá trị biến tương ứng với ngày hiện tại:

@ECHO TẮT
đặt tm=%DATE%
Ngày ECHO1 = %tm%
THIẾT LẬP tm=%DATE:.=-%
ECHO Ngày2 = %tm%

Để làm nổi bật một phần giá trị được lấy bởi một biến, cấu trúc sau được sử dụng:

biến:~x,y- Ở đâu x- số ký tự bị bỏ qua tính từ đầu dòng và y- số ký tự được sử dụng làm giá trị của biến.

Ví dụ sau sử dụng cách hiển thị thời gian hiện tại không có giây và phân số của giây (chỉ 5 ký tự đầu tiên từ giá trị tiêu chuẩn của biến TIME):

@ECHO TẮT
đặt tm=%TIME%
Thời gian ECHO1 = %tm%
THIẾT LẬP tm=%TIME:~0,5%
Thời gian ECHO2 = %tm%

Nếu giá trị y(độ dài) không được chỉ định thì giá trị của biến còn lại cho đến cuối dòng sẽ được sử dụng. Nếu giá trị y là số âm thì một phần của chuỗi giá trị biến từ cuối sẽ được sử dụng. Ví dụ trước có thể được sửa đổi để chỉ định rằng giá trị thời gian nhận được bị lược bỏ 6 ký tự tính từ cuối:

@ECHO TẮT
đặt tm=%TIME%
Thời gian ECHO1 = %tm%
THIẾT LẬP tm=%TIME:~0,-6%
Thời gian ECHO2 = %tm%

Có thể sử dụng số lần bỏ qua không được chỉ định và được sử dụng một số âm, thì giá trị nhận được sẽ là một phần của biến tính từ cuối dòng:

% ĐƯỜNG DẪN:~-10%- sẽ trích xuất 10 ký tự cuối cùng của biến PATH

Giá trị rỗng có thể được bỏ qua, giữ nguyên định dạng thay thế:

%PATH:~0,-2% tương đương %PATH:~,-2%

Khi sử dụng các biến môi trường trong các tệp bó, sẽ có hạn chế nhất định, liên quan đến thực tế là giá trị được gán không thay đổi khi nó được sửa đổi trong một nhóm lệnh được chỉ định bởi dấu ngoặc đơn, ví dụ như trong các lệnh NẾU NHƯ hoặc . Để bỏ qua hạn chế này khởi động được sử dụng bộ xử lý lệnh với tham số /V:ON và thay vì dấu phần trăm, để lấy giá trị biến nhận được, hãy sử dụng dấu chấm than. Ngoài ra, có thể sử dụng phóng tiêu chuẩn bộ xử lý lệnh, nhưng với kích hoạt cục bộ của chế độ này bằng lệnh:

Sự khác biệt về kết quả của việc sử dụng giá trị biến được thể hiện khá rõ ràng qua file batch sau:


@ECHO TẮT
đặt VAR=trước
if "%VAR%" == "trước" (
đặt VAR=sau
nếu "!VAR!" == "after" @echo Với dấu phần trăm=%VAR% , Với dấu chấm hỏi=!VAR!

Đội đặt VAR=sauđược thực thi bên trong một chương trình con được phân cách bằng dấu ngoặc đơn và nếu lệnh bị loại bỏ Setlocal EnableDelayedExpansion hoặc không sử dụng để lấy giá trị của một biến VAR dấu chấm than thì giá trị của nó sẽ giữ nguyên giá trị cũ (được đặt trước khi vào chương trình con). Một vấn đề tương tự xảy ra khi giá trị của một biến bị thay đổi trong vòng lệnh. . Ví dụ: để lấy danh sách các tệp trong thư mục hiện tại, một tệp bó như thế này sẽ không hoạt động:

đặt DANH SÁCH=
đối với %%i trong (*) hãy đặt LIST=%LIST% %%i
tiếng vang %LIST%

Giá trị biến DANH SÁCH sẽ không bị thay đổi bên trong vòng lặp. Để điều này xảy ra, tệp bó cần được sửa đổi như sau:

Setlocal EnableDelayedExpansion
đặt DANH SÁCH=
với %%i trong (*) hãy đặt LIST=!LIST! %%Tôi
tiếng vang %LIST%

Lúc này giá trị của biến DANH SÁCH bên trong một vòng lặp sẽ thay đổi, tuần tự nhận các giá trị các tên file cách nhau bởi dấu cách ( đặt LIST=!LIST! %%Tôi)

Môi trường shell cmd.exe được xác định bởi các biến kiểm soát hoạt động của shell và hệ điều hành.

Có thể xác định hành vi của môi trường shell hoặc toàn bộ môi trường hệ điều hành bằng cách sử dụng hai loại biến môi trường: hệ thống và cục bộ.

Các biến môi trường hệ thống xác định hành vi của môi trường hệ điều hành toàn cầu và các biến môi trường cục bộ xác định hành vi của môi trường trong một phiên bản cmd.exe nhất định.

Các biến môi trường hệ thống được đặt theo mặc định trong hệ điều hành và có sẵn cho mọi người Quy trình Windows và người dùng có đặc quyền quản trị viên có thể thay đổi các biến này. Các biến này được sử dụng phổ biến nhất trong các tập lệnh đăng nhập.

Các biến môi trường cục bộ có sẵn khi người dùng mà chúng được tạo đăng nhập. Các biến cục bộ từ trung tâm đăng ký HKEY_CURRENT_USER chỉ có giá trị đối với người dùng hiện tại nhưng xác định hành vi của môi trường hệ điều hành toàn cầu.

Danh sách các loại biến theo thứ tự ưu tiên giảm dần.

  1. Các biến hệ thống tích hợp
  2. Các biến hệ thống tổ ong đăng ký HKEY_LOCAL_MACHINE
  3. Các biến cục bộ của sổ đăng ký HKEY_CURRENT_USER
  4. Tất cả các biến môi trường và đường dẫn được liệt kê trong tệp Autoexec.bat.
  5. Tất cả các biến môi trường và đường dẫn được chỉ định trong tập lệnh đăng nhập (nếu có).
  6. Các biến được sử dụng tương tác trong tập lệnh hoặc tệp bó

TRONG vỏ lệnh mỗi phiên bản của cmd.exe kế thừa môi trường của nó ứng dụng gốc và theo đó, bạn có thể thay đổi các biến trong môi trường cmd.exe mới, điều này sẽ không ảnh hưởng đến môi trường ứng dụng gốc dưới bất kỳ hình thức nào.

Đây là danh sách các biến môi trường hệ thống và cục bộ cho Windows XP.

Biến đổi

Sự miêu tả

%ALLUSERSPROFILE%

Địa phương

Trả về vị trí của hồ sơ "Tất cả người dùng".

Địa phương

Trả về vị trí mặc định cho dữ liệu ứng dụng.

Địa phương

Trả về đường dẫn đến thư mục hiện tại.

Địa phương

Trả về chuỗi lệnh đã được sử dụng để khởi chạy phiên bản Cmd.exe này.

Hệ thống

Trả về số phiên bản của phần mở rộng bộ xử lý lệnh hiện tại.

Hệ thống

Trả về tên máy tính.

Hệ thống

Trả về đường dẫn đến shell lệnh đang được thực thi.

Hệ thống

Trả về dữ liệu hiện tại. Sử dụng định dạng giống như lệnh ngày/t. Được tạo bởi lệnh Cmd.exe.

Hệ thống

Trả về mã lỗi của lệnh cuối cùng được sử dụng. Ý nghĩa, không bằng 0, thường chỉ ra rằng có lỗi.

Hệ thống

Trả về tên ổ đĩa cục bộ trạm làm việc liên kết với thư mục chính của người dùng. Đặt dựa trên vị trí của thư mục chính. Thư mục chính của người dùng được chỉ định trong phần đính kèm " Người dùng địa phương và các nhóm."

Hệ thống

Trả về đường dẫn đầy đủ tới thư mục chính của người dùng. Đặt dựa trên vị trí của thư mục chính. Thư mục chính của người dùng được chỉ định trong phần đính vào Nhóm và Người dùng Cục bộ.

Hệ thống

Trả về đường dẫn mạng tới thư mục chính chung của người dùng. Đặt dựa trên vị trí của thư mục chính. Thư mục chính của người dùng được chỉ định trong phần đính vào Nhóm và Người dùng Cục bộ.

Địa phương

Trả về tên của bộ điều khiển miền đã xác thực phiên hiện tại.

%NUMBER_OF_PROCESSORS%

Hệ thống

Chỉ định số lượng bộ xử lý được cài đặt trên máy tính.

Hệ thống

Trả về tên hệ điều hành. Tại sử dụng Windows Tên hệ điều hành 2000 xuất hiện dưới dạng Windows_NT.

Hệ thống

Chỉ định đường dẫn tìm kiếm cho các tập tin thực thi.

Hệ thống

Trả về danh sách các phần mở rộng tệp được hệ điều hành coi là có thể thực thi được.

%PROCESSOR_ARCHITECTURE%

Hệ thống

Trả về kiến ​​trúc bộ xử lý. Giá trị: x86, IA64.

%PROCESSOR_IDENTFIER%

Hệ thống

Trả về mô tả của bộ xử lý.

%PROCESSOR_LEVEL%

Hệ thống

Trả về số model của bộ xử lý được cài đặt trên máy tính.

%PROCESSOR_REVISION%

Hệ thống

Trả về số sửa đổi bộ xử lý.

Địa phương

Trả về các tùy chọn dòng lệnh cho trình thông dịch hiện tại. Được tạo bởi lệnh Cmd.exe.

Hệ thống

Trả về tùy ý số thập phân từ 0 đến 32767. Được tạo bằng lệnh Cmd.exe.

Hệ thống

Trả về tên ổ đĩa chứa thư mục gốc của Windows XP (tức là thư mục hệ thống).

Hệ thống

Trả về vị trí của thư mục hệ thống Windows XP.

Hệ thống và người dùng

Trả về các thư mục tạm thời mặc định được sử dụng bởi các ứng dụng mà người dùng đã đăng nhập có thể truy cập được. Một số ứng dụng yêu cầu biến TEMP, số khác yêu cầu biến TMP.

Hệ thống

Trả lại thời điểm hiện tại. Sử dụng định dạng giống như lệnh thời gian/t. Được tạo bởi lệnh Cmd.exe.

Địa phương

Trả về tên miền chứa danh sách tài khoản người dùng.

Địa phương

Trả về tên của người dùng đã đăng nhập.

Địa phương

Trả về vị trí hồ sơ cho người dùng hiện tại.

Hệ thống

Trả về vị trí của thư mục hệ điều hành.

Trong bài viết này:

  • Xác định biến
  • Biến dòng lệnh (tham số lệnh gọi tệp bat)
  • Toán tử có điều kiện IF
  • Chức năng
  • Sử dụng giá trị trả về (xử lý mã thoát)

Xác định biến

BỘ<Имяпеременной>=<Значениепеременной>

Câu lệnh SET là phần mở rộng khả năng thao tác các tham số của hệ điều hành. Nó chỉ định một biến có giá trị được thay thế cho tên của nó bất cứ khi nào tên đó được sử dụng giữa các dấu phần trăm. Vì vậy, nếu được đặt (một biến mà nhiều trò chơi sử dụng card âm thanh máy tính):

BỘ BLASTER=A220 I5 D1 P330

sau đó khi sử dụng cấu trúc sau trong một tệp bó:

Tiếng vang %BLASTER%

"A220 I5 D1 P330" sẽ được hiển thị trên màn hình. Các biến được xác định bằng câu lệnh SET được gọi là biến môi trường và hiển thị sau khi thực thi cho đến khi DOS được khởi động lại (trừ khi được thay đổi thủ công trong bộ nhớ). Nghĩa là, nó có thể được sử dụng từ một tệp bó hoặc chương trình sau khi được chỉ định trong một tệp khác. Nổi tiếng nhất là biến PATH, đó là một tập hợp các đường dẫn cho tìm kiếm nhanh các tập tin. Nó được đặt trong tệp autoexec.bat.

Biến dòng lệnh
(tham số để gọi tập tin bat)

%<цифра 0-9>

Như trong bất kỳ ngôn ngữ nào, trong ngôn ngữ tệp bó, có thể sử dụng các biến nhận được làm tham số của tệp bat.

Có thể có tổng cộng 10 biến độc lập tồn tại đồng thời. Để viết chương trình phức tạpđiều này khá nhỏ mặc dù đối với công việc thường xuyên Thường thì 3-4 là đủ. Giá trị của biến bằng giá trị của tham số tương ứng từ dòng lệnh. Biến %0 sẽ chứa tên của tệp .bat và đường dẫn đến nó nếu bạn chỉ định. Nghĩa là, nếu bạn chạy tệp abc.bat với các tham số sau:

abc.bat a bc def

thì biến %0 sẽ chứa giá trị abc.bat , %1 sẽ chứa giá trị a , %2 sẽ chứa bc và %3 sẽ chứa def . Thuộc tính này được sử dụng rộng rãi để tạo các tệp bó linh hoạt khi xử lý các hoạt động lặp đi lặp lại.

Để nhận được hơn 10 biến từ dòng lệnh, bạn có thể sử dụng lệnh SHIFT.

Lệnh SHIFT cho phép bạn sử dụng nhiều hơn 10 tham số dòng lệnh, tuy nhiên các tham số tương ứng trước đó sẽ bị mất. Nói cách khác, lệnh SHIFT dịch chuyển tất cả các giá trị biến sang trái một bước. Nghĩa là, biến %0 sẽ chứa giá trị trước đó có trong biến %1 và biến %1 sẽ chứa giá trị của biến %2 trước khi chuyển đổi. Tuy nhiên, hoạt động này là không thể đảo ngược, nghĩa là không thể dịch chuyển các biến trở lại.

Toán tử có điều kiện IF

May mắn thay, thông dịch lệnh cmd.exe trong Windows 2000 hiện đại trở lên hỗ trợ các khối lệnh trong cấu trúc phân nhánh, loại bỏ nhu cầu sử dụng IF với nhãn. Các khối lệnh được đặt trong dấu ngoặc đơn. Nó trông như thế này (bắt chước kiểu thụt lề C/C++):

điều kiện nếu (

Lệnh Rem của nhánh 'then'

Rem...

) khác (

Lệnh Rem của nhánh 'khác'

Rem...

Ví dụ cụ thể sử dụng:

@echo tắt

đặt BUILDMODE=%1

nếu "%BUILDMODE%" == "" (

Echo FAIL: Cần phải có đối số ^(--debug, --release^)

Thoát /b 1

rem Xóa tất cả dấu gạch nối khỏi đối số để đơn giản hóa việc xử lý

đặt BUILDMODE=%BUILDMODE:-=%

if "%BUILDMODE%" == "gỡ lỗi" (

Đặt CCFLAGS=/Od /MDd /Z7

) khác (

Đặt CCFLAGS=/O2 /MD

Theo tôi, điều này hoàn toàn có thể chấp nhận được. Nhưng, như mọi khi, cuộc sống không đơn giản như người ta tưởng. Có một vấn đề. Các biến được sử dụng trong khối then và else được mở rộng trước khi khối bắt đầu thực thi, không phải trong khi thực thi. Trong ví dụ trên, điều này không gây ra bất kỳ vấn đề nào, nhưng trong ví dụ sau nó sẽ:

if "%BUILDMODE%" == "gỡ lỗi" (

Echo INFO: Đặt chế độ môi trường gỡ lỗi

Đặt OPTFLAGS=/Od

Đặt CCFLAGS=%OPTFLAGS% /MDd /Z7

) khác (

Echo INFO: Đặt chế độ phát hành môi trường

Đặt OPTFLAGS=/O2

Đặt CCFLAGS=%OPTFLAGS% /MD

Điều đáng chú ý là trong cả hai khối, việc thay thế biến OPTFLAGS sẽ xảy ra trước khi nó được thay đổi trong quá trình thực thi khối đó. Theo đó, CCFLAGS sẽ chứa đầy giá trị mà OPTFLAGS có tại thời điểm thực hiện khối này nếu bắt đầu.

Vấn đề này được giải quyết bằng cách sử dụng việc mở rộng biến bị trì hoãn. Các biến có trong !…! thay vì %...% , ý nghĩa của chúng sẽ chỉ được tiết lộ tại thời điểm sử dụng trực tiếp. Chế độ này bị tắt theo mặc định. Bạn có thể kích hoạt nó bằng cách sử dụng nút chuyển /V:ON khi gọi cmd.exe hoặc bằng cách sử dụng lệnh:

trong văn bản của chính tập tin bat. Phương pháp thứ hai có vẻ thuận tiện hơn đối với tôi - không hay lắm khi yêu cầu ai đó chạy tập lệnh của bạn với một tham số nhất định.

Như đã nói, ví dụ "sai" trước đó có thể được sửa như thế này:

setlocal kích hoạtelayedmở rộng

if "%BUILDMODE%" == "gỡ lỗi" (

Echo INFO: Thiết lập môi trường chế độ gỡ lỗi

Đặt OPTFLAGS=/Od

Đặt CCFLAGS=!OPTFLAGS! /MDd /Z7

) khác (

Echo INFO: Thiết lập môi trường chế độ phát hành

Đặt OPTFLAGS=/O2

Đặt CCFLAGS=!OPTFLAGS! /MD

Bây giờ đây gần như là một khối if-then-else chính thức. Hầu như, bởi vì nếu trong một trong các lệnh echo bạn gặp phải lỗi đóng dấu ngoặc đơn, thì bạn cần phải thoát nó bằng ký tự ^, nếu không trình phân tích cú pháp sẽ bị nhầm lẫn...

Nhưng trong mọi trường hợp, điều này tốt hơn nhiều so với số lượng thẻ và chuyển tiếp điên cuồng.

Chức năng

Có thể tạo một hàm trong tệp bat không? Vâng, bạn có thể. Hơn nữa, đôi khi nó thậm chí còn cần thiết. Đúng, đây có thể được gọi là các hàm có điều kiện.

Có một cú pháp đặc biệt cho lệnh gọi, cho phép bạn đi đến một điểm trong cùng một tệp dơi, ghi nhớ địa điểm nơi cuộc gọi này được thực hiện:

gọi: đối số nhãn

Hàm được trả về bằng lệnh:

thoát /b [mã trả về tùy chọn]

Phím /b ở đây rất quan trọng: nếu không có nó, bạn sẽ thoát không phải chức năng mà là tập lệnh nói chung.

Để biết chi tiết, gõ vào dòng lệnh:

gọi/?

lối ra /?

Điều thú vị là lệnh gọi với cú pháp này hỗ trợ các cuộc gọi đệ quy với tạo tự động khung mới cho các đối số biến %0-%9. Đôi khi điều này có thể hữu ích. Đây là một ví dụ cổ điển về tính toán giai thừa đệ quy trong ngôn ngữ lệnh:

@echo tắt

gọi: giai thừa %1

tiếng vang %KẾT QUẢ%

lối ra

rem Hàm tính giá trị giai thừa

đăng nhập lại:

rem %1 Số mà bạn muốn tính giai thừa

rem Đầu ra:

rem %RESULT% Giá trị giai thừa

:yếu tố

nếu %1 == 0 (

Đặt KẾT QUẢ=1

Thoát /b

nếu %1 == 1 (

Đặt KẾT QUẢ=1

Thoát /b

đặt /a PARAM=%1 - 1

gọi: giai thừa %PARAM%

đặt /a KẾT QUẢ=%1 * % KẾT QUẢ%

thoát /b

Ví dụ về công việc:

> giai thừa.bat 10

3628800

Sử dụng giá trị trả về
(xử lý mã thoát chương trình)

Khi bất kỳ chương trình nào hoàn thành công việc của mình, nó sẽ trả về mã kết thúc cho hệ điều hành. Theo thông lệ, trả về 0 sau khi hoàn thành thành công, nếu không thì sẽ có mã lỗi. Đôi khi, hoặc khá thường xuyên, một chương trình "cố tình" trả về giá trị khác 0 để một số chi tiết về hoạt động của nó có thể được "học" trong tệp bó. Ví dụ: chương trình trả về mã của phím được nhấn và tệp .bat thực hiện nhiều hành động khác nhau dựa trên nó.

Làm cách nào một tệp bó có thể tìm ra mã thoát của chương trình đã thực thi? Biến khóa ERRORLEVEL được cung cấp cho mục đích này.

Ví dụ về tệp bó có mức lỗi:

@ECHO TẮT

REM Chạy chương trình prg1.exe

PRG1.EXE

Phân tích mã hoàn thành REM

NẾU LỖI CẤP ĐỘ 2 GOTO TÌM HIỂU TỆP

NẾU LỖI CẤP ĐỘ 1 GOTO VIẾT LỖI

NẾU LỖI 0 GOTO EXITOK

GOTO ONEXIT

: KHÔNG TÌM THẤY TỆP

Lỗi ECHO! Không tìm thấy tập tin!

GOTO ONEXIT

:VIẾT SAI

Lỗi ghi ECHO!

GOTO ONEXIT

:EXITOK

ECHO Chương trình đã được hoàn thành thành công.

GOTO ONEXIT

:ONEXIT

Xin lưu ý rằng việc phân tích mã thoát không bắt đầu từ số 0 mà từ giá trị tối đa có thể. Thực tế là việc kiểm tra như vậy có nghĩa là: “nếu mức lỗi lớn hơn hoặc bằng giá trị thì…”. Nghĩa là, nếu chúng ta kiểm tra bắt đầu từ 0, thì mọi giá trị ở dòng đầu tiên sẽ đúng, giá trị này sẽ không chính xác.

Đây là sai lầm phổ biến nhất trong loại này các chương trình.