Biến thời gian tính bằng cmd. Lấy giá trị của một biến

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 trình bao 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 của ứng dụng mẹ.

Đâ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. Giá trị khác 0 thường chỉ ra 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 xem xét hệ điều hành như 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ề tham số dòng lệnh cho người phiên dịch hiện tại. Được tạo bởi lệnh Cmd.exe.

Hệ thống

Trả về một số thập phân tùy ý từ 0 đến 32767. Được tạo bởi 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.

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 vừa mất danh sách cmd mệnh lệnh từ thế giới của chúng ta. Mặc dù đây là một cái nhìn có phần 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 ( trong hệ điều hành Windows).

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.

Ưu điểm của việc sử 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ó, Thứ 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à chọn mục thích hợp trong menu ngữ cảnh:


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 một thư mục cụ thể hoặc tất cả các thư mục tại một đường dẫn cụ thể. 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. Một số lượng gói nhất định sẽ được gửi đến máy tính từ xa và sau đó được gửi lại cho chúng. 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

Trong ví dụ cuối cùng về lệnh ping cmd, yêu cầu được gửi đến người nhận bằng đị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).

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ớ). Tức là nó có thể được sử dụng từ một tập tin hàng loạt hoặc các chương trình nối tiếp một nhiệm vụ trong một nhiệm vụ 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, thao tác 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ố ý" 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 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.


0.00 (1 )

Cách tiếp cận chung.

Các tập tin lệnh được tập tin văn bản với phần mở rộng con dơi hoặc cmd, có dòng biểu thị các lệnh hoặc tên của các tệp thực thi. Khi bạn chạy một tệp bó, quyền kiểm soát sẽ được bộ xử lý lệnh của hệ điều hành (thường được gọi là trình thông dịch lệnh) đảm nhiệm, bộ xử lý này sẽ đọc và giải thích tuần tự các dòng trong tệp bó. Đối với Windows9X việc này được thực hiện lệnh.com, cho WinNT/2K/XP - cmd.exe. Các dòng tệp hàng loạt có thể chứa các lệnh từ chính bộ xử lý lệnh (FOR, GOTO, IF, v.v.) hoặc tên của các mô-đun thực thi (net.exe, regedit.exe, win.com, v.v.). Trong hệ điều hành WinNT/2K/XP, bạn có thể nhận trợ giúp ngắn gọn về thành phần lệnh bằng dòng lệnh:

hoặc bằng lệnh cụ thể:

TRỢ GIÚP Tên lệnh

Để hiển thị văn bản trợ giúp không phải trên màn hình mà trong một tệp, bạn có thể sử dụng chuyển hướng đầu ra . Khi sử dụng dòng lệnh, thiết bị tiêu chuẩn Thiết bị đầu vào là bàn phím và thiết bị đầu ra là màn hình, tuy nhiên các thiết bị này có thể được ánh xạ lại bằng các ký tự chuyển hướng

< - chuyển hướng đầu vào

> - chuyển hướng đầu ra (hoặc > > - chuyển hướng đến tập tin hiện có, khi dữ liệu đầu ra được thêm vào cuối tệp.)

Để xuất luồng dữ liệu lệnhGIÚP ĐỠtrong file help.txt dòng lệnh sẽ như sau:

TRỢ GIÚP > help.txt

Để hiển thị trợ giúp cho lệnh GOTO trong tệp goto.txt:

GIÚP GOTO > goto.txt

Sử dụng các biến môi trường.

TRONG tập tin hàng loạt có thể và thường nên được sử dụng biến môi trường - các biến có giá trị đặc trưng cho môi trường mà lệnh hoặc tệp bó được thực thi. Các giá trị của biến môi trường được tạo khi hệ điều hành khởi động và người dùng đăng ký vào hệ thống và cũng có thể được đặt bằng lệnhBỘ, định dạng của nó là:

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.

Ví dụ, dòng lệnh

SET mynane=Vasya

sẽ thêm một biến myname lấy giá trị Vasya.

Bạn có thể lấy giá trị của một biến trong các chương trình và tệp bó bằng cách sử dụng tên của nó được bao quanh bởi các dấu phần trăm ( %) . Ví dụ như lệnh

sẽ hiển thị thời gian từ và lệnh

sẽ hiển thị giá trị của biến thời gian, biến này lấy giá trị của thời gian hiện tại.

Và dòng lệnh

SET PATH=C:myprog;%path%

sẽ thêm vào đường dẫn tìm kiếm chương trình thực thi, được mô tả bằng giá trị biến PATH thư mục C:myprog

Thực hiện lệnh SET không có tham số khiến giá trị hiện tại của các biến được hiển thị trên màn hình, dưới dạng:

NUMBER_OF_PROCESSORS=1 - số lượng bộ xử lý

OS=Windows_NT - Loại hệ điều hành

Path=E:WINDOWSsystem32;E:WINDOWS;E:Program FilesFar - đường dẫn tìm kiếm các tập tin thực thi.

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH - phần mở rộng cho các tệp thực thi.

PROCESSOR_ARCHITECTURE=x86 - kiến ​​trúc bộ xử lý.

PROCESSOR_IDENTIFIER=x86 Dòng 6 Model 8 Bước 1, AuthenticAMD - mã định danh bộ xử lý.

PROCESSOR_LEVEL=6 - cấp độ bộ xử lý (số kiểu máy).

PROCESSOR_REVISION=0801 - phiên bản bộ xử lý.

ProgramFiles=E:Program Files - đường dẫn đến thư mục "Program Files"

PROMPT=$P$G - định dạng dấu nhắc dòng lệnh $P - đường dẫn cho thư mục hiện tại $G - dấu ">".

SystemDrive=E: - chữ cái đĩa hệ thống.

SystemRoot=E:WINDOWS - thư mục hệ điều hành Windows.

Giá trị của một số biến không được lệnh SET trả về. Đây là các biến có giá trị thay đổi linh hoạt:

%CD% - Lấy giá trị của chuỗi thư mục hiện tại.

%DATE% - Chấp nhận một giá trị ngay hiện tại.

%TIME% - Chấp nhận giá trị thời gian hiện tại.

%RANDOM% - Lấy giá trị ngẫu nhiên số thập phân trong phạm vi 1 -32767.

%ERRORLEVEL% - Chấp nhận giá trị hiện tại của mã thoát của tác vụ ERRORLEVEL

%CMDEXTVERSION% - Lấy giá trị của phiên bản bộ xử lý lệnh CMD.EXE để xử lý lệnh mở rộng.

%CMDCMDLINE% - Lấy giá trị của dòng được gọi là shell.

Bạn có thể sử dụng dòng lệnh để xem giá trị của một biến:

ECHO %biến%

Tham số đầu vào cho tệp bó.

Có thể truyền các tham số dòng lệnh vào một tệp lệnh và sử dụng các giá trị của chúng trong các câu lệnh trong chính tệp lệnh đó.

tập tin BAT< параметр1 > , < параметр2 >, ... < параметрN >

Trong chính tệp bó, tham số đầu tiên sẽ có sẵn dưới dạng một biến %1 , thứ hai - %2 và như thế. Tên của tệp bó có sẵn dưới dạng một biến %0 . Ví dụ: hãy tạo một tệp bó có nhiệm vụ hiển thị các giá trị của các tham số đã nhập trên màn hình. Thông thường lệnh dùng để hiển thị văn bản là

tiếng vang< текст >

Tuy nhiên, nếu văn bản được thay thế bằng %1 thì tham số đầu tiên sẽ được trả về, với %2 - tham số thứ hai, v.v.

Tạo tệp parm.bat có nội dung sau:

echo Tham số đầu tiên=%1

echo Tham số thứ hai=%2

echo Tham số thứ ba = %3

và chạy nó bằng lệnh sau:

parm.bat giây đầu tiên “hai từ”

sau khi thực hiện nó, bạn sẽ hiểu nó hoạt động như thế nào và các tham số có dấu cách phải được đặt trong dấu ngoặc kép. Để quá trình xử lý bộ xử lý lệnh dòng không được hiển thị trên màn hình, bạn có thể sử dụng lệnhTẮT ECHO, đặt nó trên dòng đầu tiên của tệp bó. Để tạo một dòng trong tệp bó bị shell bỏ qua, hãy đặt nó ở đầu dòngR.E.M.< пробел > . Bằng cách này, bạn có thể đặt nhận xét, thường hữu ích trong các tệp bó lớn:

rem ECHO OFF tắt chế độ hiển thị nội dung các dòng file lệnh trên màn hình

REM sẽ chỉ hiển thị kết quả thực hiện của chúng.

echo Tham số đầu tiên=%1

echo Tham số thứ hai=%2

echo Tham số thứ ba = %3

Hãy thử thay thế ECHO OFF bằng @ECHO OFF - kết quả đã nói lên điều đó. Dòng tắt chế độ đầu ra không còn hiển thị trên màn hình.

Chuyển tiếp và nhãn.

Trong các tệp bó, bạn có thể sử dụng các lệnh nhảy có điều kiện để thay đổi logic hoạt động của chúng tùy thuộc vào việc đáp ứng các điều kiện nhất định. Để minh họa cách sử dụng các bước nhảy có điều kiện, hãy tạo một tệp bó với mục đích là gán ký tự ổ đĩa được xác định trước cho phương tiện di động, sẽ là ổ đĩa flash. Các điều kiện như sau - có 2 ổ đĩa flash, một trong số đó sẽ hiển thị trong Explorer dưới dạng ổ X: và ổ thứ hai - dưới dạng ổ Y: bất kể ổ nào cổng USB chúng được kết nối. Chúng ta sẽ cho rằng bánh xe thật có thể được kết nối dưới dạng F: hoặc G: Chúng tôi sẽ xác định các đĩa bằng sự hiện diện của một tệp có tên nhất định (tốt hơn là đặt một tệp như vậy ẩn trong thư mục gốc và gọi nó là một cái gì đó bất thường):

Flashd1.let - trên đĩa đầu tiên

Flashd2.let - vào ngày thứ hai

Những thứ kia. Mục đích của tệp bó là kiểm tra sự hiện diện của đĩa rời F:G: các tập tin Flashd1.let hoặc Flashd2.let và, tùy thuộc vào cái nào hiện diện, gán ký tự ổ đĩa X: hoặc Y:

Để tìm kiếm file trên đĩa, sử dụng lệnhNẾU TỒN TẠI:

Lệnh tên tệp IF EXIST

Cách dễ nhất để sử dụng nó như một lệnh làĐĂNG KÝ, khớp với tên ổ đĩa và thư mục.

ĐẠI X: C: - tạo ra đĩa ảo X:, nội dung của nó sẽ là thư mục gốc của ổ C:

Tạo một tệp bó setXY.bat với các dòng sau:

Sau khi thực thi một tệp như vậy, bạn sẽ có các ổ X: và Y: Nhưng nếu bạn thực thi lại tệp đó, lệnh SUBST sẽ hiển thị thông báo lỗi - xét cho cùng, các ổ X: và Y: đã tồn tại.

Bạn nên bỏ qua việc thực thi SUBST nếu các đĩa ảo X: và Y: đã được tạo (hoặc xóa chúng bằng SUBST với tùy chọn -d trước khi gắn). Sửa đổi tệp bó bằng cách sử dụngĐI ĐẾN- chuyển điều khiển sang một dòng của tệp bó theo nhãn.

nhãn GOTO

Nhãn phải nằm trên một dòng riêng biệt và bắt đầu bằng dấu hai chấm. Hãy thực hiện các thay đổi đối với tệp bó của chúng tôi để không nhận được thông báo lỗi:

REM nếu X không tồn tại - sau đó chuyển đến nhãn SETX

NẾU KHÔNG Tồn Tại X: GOTO SETX

REM nếu X tồn tại: - hãy chuyển sang kiểm tra sự hiện diện của Y:

NẾU Tồn tại G:flashd1.let SUBST X: G:

NẾU Tồn tại F:flashd1.let SUBST X: F:

REM nếu Y: tồn tại - hoàn thành tệp bó.

NẾU TỒN TẠI Y: GOTO EXIT

NẾU Tồn tại G:flashd2.let SUBST Y: G:

NẾU Tồn tại F:flashd2.let SUBST Y: F:

Thoát REM từ tệp bó

Thông báo lỗi SUBST đã biến mất. Dấu hiệu lỗi khi thực thi lệnh có thể được theo dõi trong chính tệp lệnh bằng cách phân tích biếnLỖI, giá trị của nó được hình thành trong quá trình thực hiện hầu hết các chương trình. ERRORLEVEL là 0 nếu chương trình hoàn thành không có lỗi và 1 nếu xảy ra lỗi. Có thể có các giá trị khác nếu chúng được cung cấp trong chương trình thực thi.

Bạn cũng có thể sử dụng tệp bó làm lệnh trên một dòng trong tệp bó. Ngoài ra, để chuyển và quay trở lại điểm thực hiện tệp bó đang gọi, lệnh được sử dụngGỌI. Hãy tạo một tệp lệnh test.bat với nội dung sau:

Cuộc gọi ECHO 1.bat

Trả lại ECHO.

Và một file 1.bat chứa lệnhTẠM NGỪNG,tạm dừng việc thực thi một tệp bó cho đến khi nhấn bất kỳ phím nào.

Khi thực thi test.bat sẽ hiển thị thông báo trên màn hình

Gọi 1.bat

và quyền điều khiển sẽ được trao cho 1.bat bằng lệnh tạm dừng. Sau khi nhấn một phím trên bàn phím, dòng lệnh “ECHO Return” sẽ được điều khiển. và nó sẽ được hiển thị trên màn hình

Nếu bạn xóa CALL khỏi test.bat thì việc trả về từ tệp 1.bat sẽ không được thực hiện. Nhân tiện, bằng cách chuyển điều khiển sang một tệp bó, bạn có thể sắp xếp nó thành vòng lặp. Hãy thử thêm dòng sau vào cuối tệp test.bat:

Bạn có thể thoát khỏi vòng lặp tệp bó bằng cách nhấn tổ hợp CTRL-Break. Có thể sử dụng lệnh CALL để gọi một thủ tục trong một tệp bó. Trong trường hợp này, tên không được sử dụng làm đối số tập tin bên ngoài, và nhãn:
....
gọi: proc1
....
:proc1
....
lối ra
....

Tạo tập tin.

Không có trên Windows đội đặc biệtđể tạo một tệp, nhưng bạn có thể dễ dàng thực hiện mà không cần nó theo một số cách:

Sao chép từ bảng điều khiển sang tập tin

SAO CHÉP CON myfile.txt

Khi lệnh này được thực thi, dữ liệu từ bàn phím (thiết bị CON) sẽ được ghi vào file myfile.txt. Nhấn F6 hoặc Kết hợp CTRL-Z sẽ hoàn thành đầu ra.

Chuyển hướng đầu ra

ECHO 1 > myfile.txt

Chạy lệnh này sẽ tạo ra file myfile.txt chứa ký tự “1”

Kết hợp chuyển hướng đầu vào và đầu ra:

SAO CHÉP CON > myfile.txt< xyz

Khi thực hiện lệnh này, như trong trường hợp đầu tiên, việc sao chép từ bảng điều khiển sang tệp được sử dụng, nhưng thay vì nhập từ bàn phím, nhập từ thiết bị không tồn tại xyz được sử dụng. Hệ thống sẽ hiển thị thông báo cho biết thiết bị đó không tồn tại nhưng tệp trống myfile.txt sẽ được tạo thành công.
Một lựa chọn rất đơn giản là sao chép từ một thiết bị hư cấu có tên không có gì nộp.
sao chép null myfile.txt

Nếu bạn thường xuyên cần tạo các tệp trống, bạn có thể chuẩn bị tệp bó của riêng mình (ví dụ - newfile.bat hoặc thậm chí tốt hơn - nf.bat) và đặt tên tập tin đã tạo chuyển nó dưới dạng tham số khi khởi động.

Nội dung tập tin:

Đặt tệp bó này vào thư mục hệ thống của bạn (C:windowssystem32 hoặc bất cứ thứ gì có trong đường dẫn tìm kiếm PATH của bạn).

Dòng lệnh:

newfile.bat myfile.txt

Hoặc

nf.bat myfile.txt

Hoặc
nf myfile.txt

Đây là đội của bạn nfđể tạo tệp tin rỗng trên dòng lệnh.

Gán cùng một ký tự ổ đĩa cho một ổ đĩa di động.

Thử thách ở đây là làm sao có thể tháo rời được ổ USB(ổ đĩa flash) luôn có sẵn dưới cùng một chữ cái, bất kể nó được sử dụng trên máy tính nào hoặc được kết nối như thế nào. Để giải quyết nó, chúng ta sẽ sử dụng lệnh SUBST đã được đề cập ở trên. Ví dụ: hãy chọn ký tự mong muốn cho đĩa di động - X. Tên của đĩa mà tệp bó được khởi chạy có sẵn dưới dạng biến %~d0. Tạo một tệp bó với nội dung sau:
@echo tắt
thế X: %~d0
việc tạo một đĩa ảo X: được liên kết với đĩa vật lý, từ đó tệp bó được khởi chạy.
Bạn có thể lấy thông tin chi tiết bổ sung về các giá trị thay thế cho biến %0 từ tệp bó sau:

@echo tắt
ĐANG XỬ LÝ TỆP ECHO - %0
ECHO Ngày/giờ tệp bó được tạo/sửa đổi - %~t0
Đường dẫn tệp hàng loạt ECHO - "%~f0"
Đĩa tập tin lệnh ECHO - %~d0
Thư mục tập tin hàng loạt ECHO - "%~p0"
Tên tệp hàng loạt ECHO - %~n0
Phần mở rộng tệp ECHO Batch - %~x0
tiếng vang Tên ngắn và phần mở rộng - %~s0
Thuộc tính tệp hàng loạt ECHO - %~a0
Kích thước tệp hàng loạt ECHO - %~z0

Tạo các thế hệ lưu trữ dựa trên ngày và giờ.

Hãy giải quyết vấn đề sau - chúng ta cần tạo một kho lưu trữ các tệp nằm trong thư mục C:Program FilesFAR. Tên tập tin lưu trữ phải bao gồm thời gian hiện tại (giờ.phút.giây - HH.MM.SS.rar) và nó phải được đặt trong danh mục mới, tên của nó phải bao gồm ngày hiện tại (day.month.year - DD.MM.YYYY). Để lưu trữ, chúng tôi sẽ sử dụng trình lưu trữ RAR. Khởi chạy định dạng để tạo một kho lưu trữ:

RAR a -r< путь и имя архива > < Путь и имя архивируемых данных >

Một- lệnh tạo kho lưu trữ.
-r- khóa xác định việc lưu trữ các thư mục con (vì có các thư mục con trong thư mục nguồn).

Vì vậy, để giải quyết vấn đề, bạn cần tạo chính xác tên và đường dẫn cho RAR. Đối với điều này, chúng tôi sẽ sử dụng các yếu tố sau:

  • Trong các tệp bó, bạn có thể truy cập ngày và giờ hiện tại - các biến %DATE% và %TIME%
  • Trong các tệp bó, bạn có thể tạo các biến tạm thời bằng lệnh SET.
  • Giá trị của các biến tạm thời có thể được hình thành dựa trên %DATE% và %TIME% bằng cách bỏ qua và/hoặc thay thế các phần của chúng bằng cùng một lệnh SET.

    Ngày thu được từ biến %DATE% khi cài đặt tiêu chuẩn cài đặt khu vực trông như thế này:
    Thứ hai 21/01/2005- Ngày trong tuần (2 ký tự) - Dấu cách - ngày (10 ký tự)
    Ví dụ: hãy tạo một thư mục bằng lệnh MD< имя каталога >.
    Chúng tôi tạo một biến tạm thời VDATE trong bộ nhớ và gán cho nó giá trị của biến môi trường DATE, không có 3 ký tự đầu tiên - 20/01/2005:

    Đặt VDATE=%date:~3%

    Tạo một thư mục trên ổ C:, có tên = ngày hiện tại từ biến VDATE:

    MD C:\%VDATE%
    Sau khi thực hiện lệnh này, một thư mục có tên 20/01/2005 sẽ được tạo trên ổ C:

    Thời gian thu được từ biến %TIME%:
    14:30:59.93 - Giờ, phút, giây, phần trăm giây.
    Hàng trăm có lẽ không cần thiết trong tên tệp lưu trữ. Tạo biến tạm thời VTIME và gán cho thời gian hiện tại không có 3 ký tự cuối
    đặt VTIME=%time:~0,-3%
    Bây giờ VTIME = 14:30:59, nhưng không thể sử dụng dấu :// trong tên tệp, vì vậy hãy thay thế bằng dấu chấm.
    đặt VTIME=%VTIME::=.%
    Biến VTIME sẽ lấy giá trị 14,30,59 Đối với tên tệp, nó sẽ làm như vậy.

    Hãy khởi chạy trình lưu trữ:

    Bây giờ bạn có thể tạo một tệp bó với nội dung:

    Đặt VDATE=%date:~3%
    md c:\%VDATE%
    đặt VTIME=%time:~0,-3%
    đặt VTIME=%VTIME::=.%
    rar a -r C:\%VDATE%\%VTIME%.rar "C:Program filesfar*.*"

    Tệp bó như vậy có thể được thực thi thông qua tự động tải hoặc như một phần của tập lệnh khi người dùng đăng nhập vào miền hoặc sử dụng bộ lập lịch trong thời gian quy định và bạn sẽ luôn có sẵn kho lưu trữ dữ liệu quan trọng theo thứ tự thời gian.

    Tạo lưu trữ bằng cách sử dụng các biến hồ sơ người dùng.

    Tệp bó này tạo các kho lưu trữ nội dung của thư mục "Tài liệu của tôi" của người dùng Win2K/XP, đặt chúng vào các thư mục
    C:ARHIVTài liệu của tôiTên người dùngNgàyThời gian

    Các biến USERPROFILE, USERNAME, WINDIR được sử dụng nên tệp bó này sẽ không hoạt động trong WIN9X. (Mặc dù, nếu muốn, bạn có thể chèn lệnh vào autoexec.bat để đặt giá trị của các biến này và sử dụng nó trong phiên bản một người dùng mà hầu như không có thay đổi nào). Nội dung của tệp batch được nhận xét và sẽ không gây nhiều khó khăn nếu bạn hiểu ví dụ trước:

    @echo tắt
    rem Đặt biến TỪ - nơi lấy dữ liệu để lưu trữ
    đặt FROM=%USERPROFILE%Tài liệu của tôi
    rem Đặt biến TO - nơi đặt kho lưu trữ
    đặt TO=C:arhivMy Documents\%USERNAME%
    rem Hãy tạo một thư mục bảo trì
    md "%TO%"
    rem Hãy tạo tên của thư mục con từ ngày hiện tại
    rem ngày hiện tại với cài đặt mặc định cho Win2K - Thứ Hai 25/04/2005
    rem ngày hiện tại với cài đặt mặc định cho WinXP - 25/04/2005
    rem Từ ngày hiện tại chúng ta sẽ đặt tên cho thư mục con - 25/04
    rem Theo mặc định Windir cho WinXP là C:WINDOWS, và cho Win2K - C:WINNT
    IF /I %Windir% == C:WINNT GOTO Win2K
    đặt vdate=%DATE:~0,-5%
    GOTO Đặt Tên tệp
    :Win2K
    đặt vdate=%DATE:~3.-5%
    rem Hãy tạo tên tệp lưu trữ từ thời điểm hiện tại - 12:00:00.99
    rem, chúng tôi sẽ loại bỏ một phần trăm giây và thay thế ký hiệu: bằng ký hiệu. Kết quả - 12.00.00
    :SetFileName
    đặt vtime=%TIME:~0,-3%
    đặt vtime=%vtime::=.%
    rem Tạo thư mục con cho file lưu trữ
    md "%TO%\%VDATE%"
    rem Lệnh lưu trữ. Cần có khóa chuyển -r để lưu trữ với các thư mục con
    tùy chọn rem cho trình lưu trữ ARJ: arj a -r "%TO%\%VDATE%\%VTIME%.arj" "%FROM%*.*"
    rem Khi sử dụng Trình lưu trữ RAR:
    rar a -r "%TO%\%VDATE%\%VTIME%.rar" "%FROM%*.*"

    Thực hiện các lệnh theo lịch trình.

    Trong WIN2K/XP có tiện ích dòng lệnhTẠI,cho phép bạn thực thi một lệnh hoặc tệp bó tại một thời điểm được chỉ định trên máy cục bộ hoặc máy tính điều khiển từ xa. Để sử dụng lệnh AT, dịch vụ Lập lịch tác vụ phải đang chạy (thường được khởi động theo mặc định trong quá trình cài đặt hệ thống).

    TẠI [\tên máy tính] [ [mã] | /XÓA BỎ ]

    Lúc [\tên máy tính]

    [ /EVERY:ngày[,...] | /NEXT:day[,...]] "lệnh"

    \tên máy tính Tên của máy tính từ xa. Nếu tham số này bị bỏ qua,

    máy tính cục bộ được sử dụng.

    mã số Số thứ tự của nhiệm vụ đã lên lịch. Cho biết nếu bạn cần hủy một tác vụ đã được lên lịch bằng phím /xóa bỏ.

    /xóa bỏ Hủy một nhiệm vụ đã lên lịch. Nếu mã nhiệm vụ bị bỏ qua,

    hủy bỏ tất cả các nhiệm vụ được lên lịch cho việc chỉ định

    máy tính.

    /Đúng Hủy yêu cầu xác nhận khi hủy tất cả

    nhiệm vụ theo kế hoạch.

    thời gianĐã đến lúc bắt đầu lệnh.

    /tương tác Cho phép tương tác tác vụ với người dùng,

    làm việc trên máy tính khi tác vụ bắt đầu. Các tác vụ được khởi chạy mà không có phím này sẽ không hiển thị với người dùng máy tính.

    /Hằng ngày[,...] Nhiệm vụ được khởi chạy vào những ngày được chỉ định trong tuần hoặc

    tháng. Nếu ngày bị bỏ qua, ngày hiện tại sẽ được sử dụng

    /ngày tiếp theo[,...] Nhiệm vụ sẽ chạy vào ngày được chỉ định tiếp theo trong tuần

    (ví dụ thứ năm tới). Nếu ngày bị bỏ qua,

    Ngày hiện tại của tháng được sử dụng.

    "đội" Tên tập tin lệnh hoặc tập tin batch.

    Ví dụ về việc sử dụng:

    Tương tự như “đồng hồ báo thức”, - cửa sổ bật lên có văn bản nhắc nhở người dùng hiện tại hoặc người dùng được chỉ định về nhu cầu thực hiện một số hành động. Để gửi tin nhắn tới người dùng chúng ta sử dụng tiện íchNET.EXE

    Lúc 13:50 gửi net.exe * Đến giờ uống cà phê

    Lúc 17:50 net.exe gửi Người dùng Thời gian về nhà

    TẠI \SERVER 13:45 net.exe gửi Bạn cần khởi động lại máy chủ

    Xem danh sách các nhiệm vụ đã lên lịch:

    Xóa các nhiệm vụ đã được lên lịch:

    TẠI 3 /XÓA- xóa nhiệm vụ số 3

    TẠI /XÓA /CÓ- xóa tất cả các nhiệm vụ

    “Bảng điều khiển” - “Nhiệm vụ theo lịch trình” cho phép bạn xem, thay đổi và xóa những tác vụ do nhóm tạo TẠI nhiệm vụ.

    Dịch vụ dừng và khởi động hệ thống.

    Để dừng và khởi động các dịch vụ Win2K/XP từ dòng lệnh, hãy sử dụng lệnh NET.EXE

    NET.EXE DỪNG< имя службы >

    NET.EXE BẮT ĐẦU< имя службы >

    Có thể sử dụng cả tên viết tắt và tên đầy đủ (“Dnscache” là tên viết tắt, “DNS client” là tên đầy đủ của dịch vụ). Tên dịch vụ chứa khoảng trắng được đặt trong dấu ngoặc kép. Ví dụ về khởi động lại dịch vụ “DNS Client”

    dừng mạng "máy khách DNS"

    khởi động mạng "máy khách DNS"

    Tương tự, sử dụng tên ngắn:

    dừng mạng Dnscache

    khởi động mạng Dnscache

    Tên đầy đủ của dịch vụ có thể được sao chép từ “Dịch vụ” -< Имя службы >- “Thuộc tính” - “Tên hiển thị”

    Để quản lý dịch vụ, sẽ thuận tiện hơn nhiều khi sử dụng tiện ích PsService.exe từ tiện ích PsTools, tiện ích này không yêu cầu cài đặt và hoạt động trên mọi hệ điều hành Windows. Ngoài việc bắt đầu và dừng một dịch vụ, cho phép bạn tìm kiếm một dịch vụ cụ thể trên máy tính mạng nội bộ, thăm dò trạng thái và cấu hình của dịch vụ, thay đổi kiểu khởi động, tạm dừng dịch vụ, tiếp tục, khởi động lại.

    Để làm việc với các dịch vụ hệ thống trong Windows XP, bạn có thể sử dụng tiện ích sc.exe, cho phép bạn không chỉ dừng/khởi động một dịch vụ mà còn thăm dò trạng thái, các thông số khởi động và vận hành, thay đổi cấu hình và không chỉ hoạt động với các dịch vụ hệ thống mà còn với trình điều khiển. Nếu có quyền, bạn có thể quản lý các dịch vụ không chỉ trên máy cục bộ mà còn trên máy từ xa. Ví dụ:
    sc.exe dừng DNSCache- dừng dịch vụ DNSCache trên máy tính cục bộ.
    truy vấn sc\192.168.0.1 DNSCache- thăm dò trạng thái dịch vụ DNSCache trên máy tính có địa chỉ IP 192.168.0.1
    sc\COMP khởi động DNSCache khởi động dịch vụ DNSCache trên máy tính COMP
    Bạn có thể nhận trợ giúp khi làm việc với tiện ích này bằng cách nhập:
    sc/?

    Hiển thị giá trị của biến ERRORLEVEL.

    Tệp bó đơn giản này sẽ hiển thị giá trị của biến ERRORLEVEL trên một dòng lệnh cụ thể. Trước tiên, nó kiểm tra sự hiện diện của ít nhất một tham số đầu vào và nếu không có tham số nào được đưa ra thì sẽ có thông báo lỗi và xảy ra thoát. Nếu ít nhất một tham số được chỉ định thì các tham số đầu vào sẽ được lấy làm dòng lệnh và được thực thi, đồng thời giá trị ERRORLEVEL được trả về bằng lệnh ECHO. Nội dung của tập tin (tôi gọi nó là echoEL.bat):

    @echo tắt
    nếu "%1" NEQ "" GOTO PARMOK
    ECHO Bạn cần đặt dòng lệnh để xác định ERRORLEVEL
    lối ra
    :PARMOK
    %1 %2 %3 %4 %5 %6 %7 %8
    ECHO %1 %2 %3 %4 %5 %6 %7 %8 ERRORLEVEL=%ERRORLEVEL%

    Ví dụ khởi chạy:
    echoEL.bat CHIA SẺ NET
    - lệnh NET SHARE sẽ được thực thi (đưa ra danh sách các tài nguyên mạng được chia sẻ) và mã ERRORLEVEL sẽ được cấp
    echoEL.bat NET CHIA SẺ X"="C:
    - lệnh NET SHARE X:=C: sẽ được thực thi (tạo một chia sẻ tài nguyên mạng với tên X và đường dẫn đến thư mục gốc của ổ C :) Lưu ý ký hiệu = được đặt trong dấu ngoặc kép.
    Các tùy chọn được liệt kê ở trên đặt dòng lệnh chính xác. Nhưng hãy thử đặt sai tham số thành NET.EXE hoặc một lệnh không tồn tại và bạn sẽ thấy giá trị ERRORLEVEL sẽ nhận. VÀ XIN LƯU Ý rằng dòng lệnh thực sự THỰC HIỆN và, ví dụ: tùy chọn “echoEL.bat format A:” sẽ bắt đầu định dạng đĩa mềm trong ổ A:.

    Đối thoại với người dùng

    Để đối thoại với người dùng, bạn có thể sử dụng lệnh:
    BỘ /P< имя переменной >=< текст >
    khi thực hiện, màn hình hiển thị tin nhắn văn bản < текст >và văn bản phản hồi được mong đợi. Ví dụ - hãy yêu cầu mật khẩu và gán giá trị của nó cho biến "pset":

    Đặt /p pset="Nhập mật khẩu - "
    echo Mật khẩu là - %pset%

    Nhược điểm của phương pháp này là không thể tiếp tục thực thi tệp lệnh nếu không có phản hồi của người dùng, do đó rất thường xuyên sử dụng set thay vì chương trình của bên thứ ba. Một trong số chúng - LỰA CHỌN.COM Tải xuống (1.7kb).
    CHOICE hiển thị cho người dùng một tin nhắn văn bản và đợi người dùng chọn một trong các tùy chọn nhất định phản hồi (nhấn phím trên bàn phím). Dựa trên kết quả lựa chọn, biến ERRORLEVEL được hình thành, giá trị của biến này bằng số thứ tự của lựa chọn. Theo mặc định, có hai tùy chọn - Y hoặc N. Nếu câu trả lời là Y - thì ERRORLEVEL=1, nếu N - thì ERRORLEVEL=2. Bạn có thể sử dụng nhiều hơn 2 tùy chọn lựa chọn và có thể đặt lựa chọn mặc định khi người dùng ở thời gian nhất định Tôi đã không nhấn một phím nào. Định dạng dòng lệnh:

    LỰA CHỌN LỰA CHỌN] c,nn]
    /C[:]choices - xác định các lựa chọn hợp lệ. Nếu không được chỉ định - YN
    /N - không hiển thị các tùy chọn lựa chọn.
    /S - chữ thường và chữ hoa khác nhau.
    /T[:]c,nn - Lựa chọn mặc định là "c" sau "nn" giây
    văn bản - Xuất chuỗi văn bản dưới dạng yêu cầu

    Hãy tạo một tệp bó thể hiện việc sử dụng LỰA CHỌN. Nó sẽ phản hồi khi nhấn các phím "1", "2", 3" và "0". Khi bạn nhấn "0", nó sẽ hoàn thành và khi bạn nhấn các phím còn lại, một thông báo sẽ được gửi đến người dùng. Nếu không có gì nhấn trong vòng 10 giây, nó sẽ hoàn thành.

    @ECHO TẮT
    :SỰ LỰA CHỌN
    LỰA CHỌN /C:1230 /T:0.10 Lựa chọn của bạn
    NẾU %ERRORLEVEL% EQUI 4 GOTO EXIT
    echo Lựa chọn của bạn=%ERRORLEVEL%
    LỰA CHỌN GOTO
    :LỐI RA

    Giờ đây, bằng cách sử dụng CHOICE, bạn có thể tạo các tệp bó, logic của tệp này có thể được người dùng xác định.

    Sự chậm trễ trong các tập tin hàng loạt

    Ngày xửa ngày xưa, trong DOS, lệnh SLEEP tiện lợi được sử dụng để sắp xếp việc chờ đợi trong một tệp lệnh, nhưng sau đó vì lý do nào đó, nó đã di chuyển khỏi cài đặt tiêu chuẩn. Bộ cửa sổ trong Bộ tài nguyên bổ sung. Bạn có thể chỉ cần sao chép nó từ đó vào thư mục system32 và sử dụng nó trong các tệp bó của mình.

    : SLEEP N - trong đó N là số giây cần trì hoãn.

    Nếu không có Bộ tài nguyên, bạn có thể sử dụng lệnh CHOISE đã thảo luận trước đó mà không cần xuất văn bản và tự động tạo phản hồi sau nn giây (1-99):

    Choice.com /T:y,10 /N - trì hoãn trong 10 giây

    Hơn phương pháp phổ quát dựa trên việc ping giao diện loopback với số lượng gói được yêu cầu. Ping cho giao diện loopback (tên máy chủ - localhost hoặc địa chỉ IP 127.0.0.1) được thực hiện mà không cần truyền dữ liệu thực tế, tức là. gần như ngay lập tức và khoảng thời gian giữa các lần ping là 1 giây. Bằng cách chỉ định số lượng ping bằng cách sử dụng khóa chuyển "-n", bạn có thể nhận được độ trễ n giây:

    Ping 127.0.0.1 -n 30 > nul - sẽ bị trễ 30 giây

    Tìm kiếm máy tính chạy ứng dụng

    Để triển khai tập lệnh này, hãy sử dụng các tiện ích từ gói PSCông cụ(Mô tả ngắn). Hãy tạo một tệp bó để tìm kiếm các máy tính đang chạy chương trình trong mạng cục bộ, tên của chương trình đó (phần đầu của tên) được chỉ định làm tham số khi khởi động, ví dụ: trò chơi . Nếu bị phát hiện, một thông báo sẽ được gửi tới máy tính ADMINCOMP và ứng dụng bị phát hiện sẽ buộc phải chấm dứt. Để tìm kiếm, chúng ta sẽ sử dụng tiện ích Pslist.exe và phân tích mã trả về của nó. Giá trị của biến ERRORLEVEL bằng 0 có nghĩa là tiện ích đã phát hiện một tiến trình trên máy tính từ xa phù hợp với điều kiện tìm kiếm. Chúng tôi sẽ đặt tên của quy trình để tìm kiếm làm tham số khi chạy tệp bó. Hãy đặt tên cho tệp bó của chúng tôi psl.bat. Chạy với tham số sẽ như thế này:
    trò chơi psl.bat
    Đầu tiên, chúng ta cần kiểm tra xem tham số có được chỉ định trên dòng lệnh khi khởi động hay không và nếu nó không được chỉ định, chúng tôi sẽ đưa ra thông báo cho người dùng và hoàn tất thực thi. Nếu tham số được chỉ định, hãy chuyển đến nhãn "PARMOK":
    @echo tắt
    nếu "%1" NEQ "" GOTO PARMOK
    ECHO Bạn cần chỉ định tên quy trình để tìm kiếm
    lối ra
    :PARMOK
    Bây giờ chúng ta cần đảm bảo việc tạo địa chỉ IP máy tính nhất quán cho dòng lệnh PSlist. Cách dễ nhất để thực hiện việc này là gán một biến môi trường tạm thời (chỉ hợp lệ trong thời gian thực thi tệp lệnh) cho giá trị của thành phần không đổi của địa chỉ (ví dụ: 192.168.0.) và giá trị được tính toán của phần thứ tự thấp (ví dụ: trong phạm vi 1-254). Ví dụ: chúng tôi sẽ giả định rằng chúng tôi cần quét các máy tính trong dải địa chỉ:
    192.168.0.1 - 192.168.0.30:
    đặt IPTMP=192.168.0. - phần cao cấp của địa chỉ
    đặt /A IPLAST=1 - phần thấp. Công tắc /A có nghĩa là một biểu thức số được tính toán
    đặt IPFULL=%IPTMP%%IPLAST% - giá trị của địa chỉ IP đầy đủ.
    Dòng lệnh cho PSlist sẽ trông như thế này:
    pslist\%IPFULL%%1
    Bây giờ tất cả những gì còn lại là chạy PSlist theo chu kỳ, thêm một vào phần thứ tự thấp của địa chỉ trong mỗi chu kỳ cho đến khi giá trị của nó đạt tới 30 và phân tích giá trị ERRORLEVEL sau khi thực thi. Để phân tích kết quả, chúng ta sẽ thực hiện chuyển đổi bằng lệnh:
    GOTO REZULT%ERRORLEVEL%
    cung cấp sự chuyển đổi sang nhãn REZULT0 khi một quá trình được phát hiện và sang REZULT1
    25-08-2013 14:35:35: Bài viết: Bảo mật thông tin: Phần mềm. Bạn có thích nó không?
  • 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 ký tự ổ đĩa hệ thống, chúng ta luôn có thể sử dụng 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

    Shell lệnh Windows (cmd.exe) rất 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. Giao diện người dùng dòng lệnh dựa trên văn bản 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- một trình thông dịch lệnh đó vỏ lệnh Hệ điều hành Windows sử dụng để dịch lệnh đã nhập sang định dạng mà hệ thống 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à bằng cách chạy một tệp bó. 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).