Nếu biến lấy giá trị cmd if. Các tính năng và chức năng của CMD-BAT

Trong bài viết này chúng ta sẽ xem xét điều hành có điều kiện nếu dòng lệnh (CMD). Giống như bất kỳ ngôn ngữ lập trình nào khác, các câu lệnh có điều kiện được sử dụng để kiểm tra một điều kiện nhất định và tùy thuộc vào kết quả mà thực hiện một hoặc một hành động khác.

Câu lệnh điều kiện cmd if chứa cú pháp gần như giống với các cấu trúc tương tự Ngôn ngữ VBScript(xem bài “”) và máy chủ tập lệnh Jscript (bài “”).

dòng lệnh câu lệnh if

điều kiện if (câu lệnh 1)

Lúc bắt đầu Kiểm trađiều kiện, nếu nó được thỏa mãn, quá trình chuyển đổi sẽ chuyển sang thực thi toán tử1, nếu không, chuyển sang toán tử2. Nếu sau từ khóa nếu bạn viết không (nếu không), thì: điều kiện sẽ được kiểm tra, nếu không thỏa mãn thì chuyển đến toán tử 1, nếu thỏa mãn điều kiện thì chuyển đến toán tử 2. Việc sử dụng dấu ngoặc đơn là tùy chọn, nhưng nếu bạn cần thực thi một số câu lệnh cmd if cùng một lúc sau khi kiểm tra điều kiện, thì dấu ngoặc tròn cần thiết.

hãy mở ra soạn thảo sổ ghi chép++ và viết đoạn mã sau vào đó:

Ở đây, như trước đây, tham số được truyền cho tập lệnh sẽ được kiểm tra; nếu giá trị là 1 thì ba lệnh sẽ được thực thi tuần tự:

  • tên máy chủ– hiển thị tên máy tính
  • phiên bản– hiển thị phiên bản hệ điều hành
  • ipconfig / all- hiển thị cài đặt mạng

Để thực hiện các lệnh một cách tuần tự, chúng ta sử dụng dấu nối “&”. Nếu điều kiện không được đáp ứng, tiện ích sẽ được gọi netstat.

Để kiểm tra sự tồn tại của một biến, các toán tử được sử dụng nếu được xác định(nếu biến tồn tại) và nếu như không xác định (nếu biến không tồn tại):

@ echo off set Var1 =100 nếu được xác định Var1 (echo % Var1% ) set Var1 = nếu không được xác định Var1 (echo NOT EXIST!!! Var1)

Nếu bạn chạy mã này, khi đó hai dòng sẽ được hiển thị trong cửa sổ dòng lệnh:

100
KHÔNG TỒN TẠI!!! Var1

Đầu tiên, tập lệnh tạo biến Var1 và gán cho nó giá trị 100, sau đó kiểm tra: nếu biến Var1 tồn tại, hãy in giá trị của nó. Sau đó, chúng ta xóa biến và chạy kiểm tra lại: nếu biến Var1 không tồn tại, hãy in dòng NOT EXIST!!! Var1.

Chúng ta có quyền sử dụng câu lệnh if có điều kiện dưới dạng câu lệnh lồng nhau:

@ echo off if "%1" =="1" (@ if "%2" =="2" (tên máy chủ & ver) else (ver) ) else (tên máy chủ & ver & netstat -a)

TRONG trong ví dụ này, câu lệnh dòng lệnh đầu tiên nếu kiểm tra xem đối số thứ nhất có bằng 1 hay không, nếu vậy thì câu lệnh điều kiện thứ hai sẽ được thực thi và giá trị của đối số còn lại sẽ được kiểm tra.

Ghi chú!!! Tất cả các biến được định nghĩa là chuỗi. Khi kiểm tra điều kiện, tôi đã đính kèm tên biến và giá trị trong dấu ngoặc kép, điều này sẽ tránh được lỗi vì tham số hoặc đối số có thể chứa dấu cách hoặc biến có thể không có giá trị nào cả.

Bây giờ chúng ta hãy xem ví dụ này:

TRONG trong trường hợp này, chúng tôi sẽ truyền chuỗi SLOVO, slovo, SloVo, v.v. và chuỗi “slovo” sẽ được hiển thị trên màn hình bảng điều khiển vì phân biệt chữ hoa chữ thường sẽ bị tắt.

Dòng lệnh if, toán tử so sánh

Ngoài toán tử so sánh “==”, bạn có thể sử dụng các toán tử khác để kiểm tra một điều kiện:

  • ngang bằng"Bằng nhau". Trả về True nếu các giá trị bằng nhau
  • neq"Không công bằng". Trả về True nếu giá trị không bằng nhau
  • lss"Ít hơn". Trả về True nếu value1 nhỏ hơn value2
  • lcq"Ít hơn hoặc bằng". Trả về True nếu value1 bằng hoặc nhỏ hơn value2
  • gtr"Hơn". Trả về True nếu value1 lớn hơn value2
  • geq"Nhiều hơn hoặc bằng". Trả về True nếu value1 bằng hoặc lớn hơn value2

Trong bài viết này, chúng ta đã xem xét câu lệnh điều kiện dòng lệnh if.

Bạn có thể gọi một tệp khác từ một tệp bó bằng cách chỉ định tên của nó. Ví dụ:

@ECHO OFF CLS REM Danh sách các tệp nhật ký DIR C:\*.log REM Chuyển thực thi sang tệp f.bat f.bat SAO CHÉP A:\*.* C:\ PAUSE

Tuy nhiên, trong trường hợp này, sau khi thực thi tệp được gọi, quyền điều khiển không được chuyển sang tệp đang gọi, tức là trong ví dụ đã cho, lệnh

(và tất cả các lệnh theo sau nó) sẽ không bao giờ được thực thi.

Để gọi ra bên ngoài tập tin hàng loạt và sau đó quay lại file gốc, bạn cần sử dụng đội đặc biệt tập tin GỌI

Ví dụ:

@ECHO OFF CLS REM Danh sách các tệp nhật ký DIR C:\*.log REM Chuyển thực thi sang tệp f.bat GỌI f.bat SAO CHÉP A:\*.* C:\ PAUSE

Trong trường hợp này, sau khi tệp f.bat hoàn thành, điều khiển sẽ quay trở lại tệp gốc trên dòng theo lệnh CALL (trong ví dụ của chúng tôi, đây là lệnh COPY A:\*.* C:\).

Toán tử nhảy

Tệp bó có thể chứa nhãn và lệnh GOTO để chuyển đến các nhãn này. Bất kỳ dòng nào bắt đầu bằng dấu hai chấm: đều được coi là nhãn khi xử lý tệp bó. Tên nhãn được chỉ định bởi tập hợp các ký tự theo sau dấu hai chấm cho đến khoảng trắng đầu tiên hoặc cuối dòng. Hãy đưa ra một ví dụ.

Giả sử có một tệp bó có nội dung sau:

@ECHO OFF COPY %1 %2 GOTO Label1 ECHO Dòng này sẽ không bao giờ được thực thi:Label1 REM Tiếp tục thực thi DIR %2

Sau khi chúng tôi nhận được lệnh trong tập tin này

việc thực hiện nó tiếp tục từ dòng

REM Tiếp tục thực hiện

Trong lệnh tệp GOTO, bạn có thể chỉ định chuỗi :EOF làm nhãn nhảy, chuyển điều khiển đến cuối tệp bó hiện tại (điều này cho phép bạn dễ dàng thoát khỏi tệp bó mà không cần xác định bất kỳ điểm đánh dấu nào ở cuối).

Ngoài ra, để đi đến nhãn bên trong tệp lệnh hiện tại, ngoài lệnh GOTO, bạn cũng có thể sử dụng lệnh CALL đã thảo luận ở trên:

GỌI:nhãn đối số

Khi một lệnh như vậy được gọi, một bối cảnh mới của tệp bó hiện tại sẽ được tạo với các đối số đã cho và điều khiển được chuyển sang lệnh nằm ngay sau nhãn. Để thoát khỏi một tệp bó như vậy, bạn phải đến cuối tệp đó hai lần. Lối ra đầu tiên trả lại quyền điều khiển cho lệnh ngay sau dòng CALL và lối ra thứ hai chấm dứt việc thực thi tệp bó. Ví dụ: nếu bạn chạy tệp bó sau với tham số “Copy-1”:

@ECHO TẮT ECHO %1 CUỘC GỌI:2 Sao chép-2:2 ECHO %1

sau đó ba dòng sẽ được hiển thị trên màn hình:

Sao chép-1 Sao chép-2 Sao chép-1

Vì vậy việc sử dụng lệnh CALL này rất giống với cuộc gọi bình thường chương trình con (thủ tục) trong ngôn ngữ lập trình thuật toán.

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

Sử dụng lệnh IF...ELSE (từ khóa ELSE có thể không xuất hiện) trong tập tin hàng loạt Bạn có thể xử lý nhiều loại điều kiện. Ngoài ra, nếu điều kiện được chỉ định sau IF đánh giá là đúng thì hệ thống sẽ thực thi lệnh (hoặc một số lệnh nằm trong ngoặc đơn) theo điều kiện đó, nếu không thì lệnh (hoặc một số lệnh trong ngoặc đơn) theo sau điều kiện sẽ được thực thi. từ khóa KHÁC.

Kiểm tra giá trị của một biến

Loại điều kiện đầu tiên thường được sử dụng để kiểm tra giá trị của một biến. Có hai tùy chọn cú pháp để lệnh IF thực hiện việc này:

NẾU dòng1==dòng2 lệnh1

(dấu ngoặc vuông cho biết các tham số chứa trong chúng là tùy chọn) hoặc

IF dòng1 so sánh_operator lệnh dòng2

Trước tiên hãy xem xét tùy chọn đầu tiên. Điều kiện line1==line2 (ở đây bạn cần viết chính xác hai dấu bằng) được coi là đúng khi kết hợp chuẩn xác cả hai dòng. Tham số NOT chỉ ra rằng lệnh đã cho chỉ được thực thi nếu các chuỗi so sánh không khớp.

Chuỗi có thể là chữ hoặc đại diện cho các giá trị biến (ví dụ: %1 hoặc %TEMP% ). Dấu ngoặc kép không bắt buộc đối với chuỗi ký tự. Ví dụ,

NẾU %1==%2 Thông số ECHO khớp! NẾU %1==Petya ECHO Xin chào, Petya!

Lưu ý rằng cần thận trọng khi so sánh các chuỗi được xác định bởi các biến. Thực tế là giá trị của biến có thể trở thành một chuỗi trống và khi đó có thể xảy ra tình huống trong đó việc thực thi tệp bó sẽ chấm dứt một cách bất thường. Ví dụ: nếu bạn không xác định biến MyVar bằng lệnh SET và tệp chứa câu lệnh điều kiện như

NẾU %MyVar%==C:\ ECHO Hoan hô!!!

thì trong quá trình thực thi nó sẽ được thay thế cho %MyVar% dòng trống và sẽ có lỗi cú pháp. Tình huống tương tự có thể xảy ra nếu một trong các chuỗi được so sánh là giá trị của tham số dòng lệnh, vì tham số đó có thể không được chỉ định khi tệp lệnh được chạy. Vì vậy, khi so sánh các chuỗi, bạn cần thêm một số ký hiệu vào đầu chuỗi, ví dụ:

NẾU -%MyVar%==-C:\ ECHO Hoan hô!!!

Bằng cách sử dụng lệnh IF và SHIFT, bạn có thể lặp qua tất cả các tham số dòng lệnh của một tệp, ngay cả khi không biết trước số lượng của chúng. Ví dụ: tệp bó sau (hãy gọi nó là Primer.bat) hiển thị tên của tệp sẽ được khởi chạy và tất cả các tùy chọn dòng lệnh:

@ECHO OFF ECHO Tệp thực thi: %0 ECHO. ECHO Tệp được khởi chạy với các tham số sau... REM Bắt đầu vòng lặp:BegLoop IF -%1==- GOTO ExitLoop ECHO %1 REM Chuyển tham số SHIFT REM Đi tới đầu vòng lặp GOTO BegLoop:ExitLoop REM Thoát vòng lặp ECHO. ECHO Tất cả.

Nếu bạn chạy prime.bat với bốn tham số:

Primer.bat A B C D

thì kết quả của việc thực thi các thông tin sau sẽ được hiển thị trên màn hình.

Điều kiện xử lý trong chương trình batch

Cú pháp

nếu như [không] mức độ lỗi con số đội [khác sự biểu lộ]

nếu như [không] dòng 1== dòng 2 đội [khác sự biểu lộ]

nếu như [không] hiện hữu tên tập tin đội [khác sự biểu lộ]

Nếu tiện ích mở rộng bộ xử lý lệnhđược phép, nên sử dụng cú pháp sau:

nếu như [/Tôi] dòng 1 op_so sánh dòng 2 đội [khác sự biểu lộ]

nếu như chuyển đổi cmdex con số đội [khác sự biểu lộ]

nếu như được xác định Biến đổi đội [khác sự biểu lộ]

Tùy chọn

not Chỉ định rằng lệnh sẽ chỉ được thực thi nếu điều kiện không được đáp ứng. mức độ lỗi con sốĐiều kiện là đúng nếu lệnh trước đó được trình thông dịch lệnh Cmd.exe xử lý hoàn thành với mã bằng hoặc lớn hơn con số. command Lệnh cần được xử lý nếu điều kiện được đáp ứng. dòng 1== dòng 2Điều kiện được thỏa mãn nếu đường dòng 1dòng 2 phù hợp. Các chuỗi có thể được đặt rõ ràng hoặc có thể là các biến hàng loạt (ví dụ: %1 ). Chuỗi rõ ràng không cần phải trích dẫn. hiện hữu tên tập tinĐiều kiện là đúng nếu có một tệp có tên tên tập tin. so sánh_op Toán tử so sánh ba chữ số. Bảng liệt kê sau đây giá trị hợp lệ op_so sánh. /i So sánh các chuỗi mà không tính đến trường hợp ký tự. Tham số /Tôi có thể được sử dụng trong xây dựng chuỗi1== chuỗi2đội nếu như. Những so sánh này là chung chung. Nếu như dòng 1, Và dòng 2 bao gồm các chữ số, các chuỗi được chuyển đổi thành số và việc so sánh các số được thực hiện. chuyển đổi cmdex con sốĐiều kiện chỉ đúng nếu số phiên bản nội bộ được liên kết với phần mở rộng shell Cmd.exe bằng hoặc lớn hơn con số. phiên bản đầu tiên là số 1. Số phiên bản tăng thêm 1 khi có những thay đổi đáng kể đối với phần mở rộng shell. Điều kiện với chuyển đổi cmdex không thành công nếu tiện ích mở rộng shell bị tắt (chúng được bật theo mặc định). được xác định Biến đổiĐiều kiện được thỏa mãn nếu Biến đổi xác định. biểu thức Lệnh và tất cả các tham số của nó để xử lý trên dòng lệnh khi thực thi câu lệnh khác. /? Hiển thị trợ giúp trên dòng lệnh.

Ghi chú

  • Nếu điều kiện được chỉ định trong lệnh nếu như, được thực thi thì lệnh theo điều kiện sẽ được thực thi. Nếu điều kiện không được đáp ứng, lệnh được chỉ định trong câu lệnh nếu như, bị bỏ qua và quyền điều khiển chuyển sang lệnh của người vận hành khác, nếu nó được chỉ định.
  • Khi chương trình thoát ra, nó sẽ trả về mã thoát. Sử dụng tham số mức độ lỗi mã thoát có thể được sử dụng làm điều kiện.
  • Sử dụng lệnh được xác định Biến đổi

    Khi sử dụng lệnh được xác định Biến đổi ba biến sau đây được thêm vào: % mức lỗi%, %cmdcmdline%%cmdextversion%.

    % mức lỗi% mức độ lỗi, trừ khi nó đã tồn tại biến môi trường với tên ERRORLEVEL. Trong trường hợp này, giá trị của nó sẽ được sử dụng. Ví dụ sau đây cho thấy việc sử dụng giá trị mức độ lỗi sau khi thực hiện chương trình hàng loạt:

    đi tới câu trả lời%errorlevel%
    :trả lời0
    echo Mã trả về của chương trình là 0
    :trả lời 1
    echo Mã trả về của chương trình là 1
    kết thúc
    :kết thúc
    tiếng vang Xong!

    Toán tử so sánh op_so sánh cũng có thể được sử dụng như thế này:

    Nếu %errorlevel% LEQ 1 thì được

    %cmdcmdline%được thay thế bằng cái ban đầu dòng lệnhđược chuyển tới Cmd.exe trước khi nó được Cmd.exe xử lý, trừ khi đã có biến môi trường có tên cmdcmdline. Trong trường hợp này, giá trị sẽ được sử dụng cmdcmdline.

    %cmdextversion%được thay thế bằng một chuỗi biểu diễn giá trị hiện tại chuyển đổi cmdex trừ khi đã có biến môi trường có tên CMDEXTVERSION. Trong trường hợp này, giá trị của nó sẽ được sử dụng.

  • Sử dụng toán tử khác

    Nhà điều hành khác phải được đặt trên cùng dòng với lệnh nếu như. Ví dụ:

    NẾU EXIST tên tệp. (del tên tệp.) ELSE (tên tệp echo. bị thiếu.)

    del phải kết thúc dòng mới:

    NẾU EXIST tên tệp. xóa tên tập tin. ELSE tên tệp tiếng vang. vắng mặt

    Ví dụ dưới đây sẽ không hoạt động vì lệnh khác phải ở cùng dòng với lệnh nếu như:

    NẾU EXIST tên tệp. xóa tên tập tin. ELSE tên tệp tiếng vang. vắng mặt

    Nếu bạn cần đặt toàn bộ câu lệnh trên một dòng, bạn có thể sử dụng dạng đúng sau đây của câu lệnh gốc:

    NẾU tên tệp EXIST (tên tệp del) ELSE tên tệp echo bị thiếu

Ví dụ

Nếu không tìm thấy tệp Product.dat, thông báo sau sẽ xuất hiện:

nếu không tồn tại Product.dat echo Không tìm thấy tệp dữ liệu

Trong ví dụ bên dưới, nếu xảy ra lỗi khi định dạng đĩa ở ổ A, thông báo lỗi sẽ được hiển thị:

:bắt đầu
@echo tắt
định dạng a: /s
nếu không phải lỗi cấp 1 thì hãy kết thúc
echo Lỗi định dạng.
:kết thúc
echo Kết thúc chương trình hàng loạt.

Nếu không có lỗi xảy ra, sẽ không có thông báo lỗi nào được hiển thị.

Đội nếu như không thể được sử dụng trực tiếp để kiểm tra sự tồn tại của một thư mục, nhưng một thiết bị (NUL) tồn tại trong mỗi thư mục. Do đó, sự tồn tại của một thư mục có thể được kiểm tra như dưới đây. Ví dụ sau kiểm tra sự tồn tại của một thư mục:

nếu tồn tại c:mydir\nul goto quá trình

Đối với các câu hỏi, thảo luận, nhận xét, đề xuất, v.v., bạn có thể sử dụng phần diễn đàn của trang này (yêu cầu đăng ký).

Điều kiện xử lý trong chương trình hàng loạt

Cú pháp

nếu như [không] mức độ lỗi con số đội [khác sự biểu lộ]

nếu như [không] dòng 1== dòng 2 đội [khác sự biểu lộ]

nếu như [không] hiện hữu tên tập tin đội [khác sự biểu lộ]

Nếu tiện ích mở rộng shell được bật, nên sử dụng cú pháp sau:

nếu như [/Tôi] dòng 1 op_so sánh dòng 2 đội [khác sự biểu lộ]

nếu như chuyển đổi cmdex con số đội [khác sự biểu lộ]

nếu như được xác định Biến đổi đội [khác sự biểu lộ]

Tùy chọn

not Chỉ định rằng lệnh sẽ chỉ được thực thi nếu điều kiện không được đáp ứng. mức độ lỗicon sốĐiều kiện là đúng nếu lệnh trước đó được trình thông dịch lệnh Cmd.exe xử lý hoàn thành với mã bằng hoặc lớn hơn con số. command Lệnh cần được xử lý nếu điều kiện được đáp ứng. dòng 1== dòng 2Điều kiện được thỏa mãn nếu đường dòng 1dòng 2 phù hợp. Các chuỗi có thể được đặt rõ ràng hoặc có thể là các biến hàng loạt (ví dụ: %1 ). Chuỗi rõ ràng không cần phải trích dẫn. hiện hữutên tập tinĐiều kiện là đúng nếu có một tệp có tên tên tập tin. so sánh_op Toán tử so sánh ba chữ số. Bảng sau liệt kê các giá trị hợp lệ op_so sánh.

/i So sánh các chuỗi mà không tính đến trường hợp ký tự. Tham số /Tôi có thể được sử dụng trong xây dựng chuỗi1== chuỗi2đội nếu như. Những so sánh này là chung chung. Nếu như dòng 1, Và dòng 2 bao gồm các chữ số, các chuỗi được chuyển đổi thành số và việc so sánh các số được thực hiện. chuyển đổi cmdex con sốĐiều kiện chỉ đúng nếu số phiên bản nội bộ được liên kết với phần mở rộng shell Cmd.exe bằng hoặc lớn hơn con số. phiên bản đầu tiên là số 1. Số phiên bản tăng thêm 1 khi có những thay đổi đáng kể đối với phần mở rộng shell. Điều kiện với chuyển đổi cmdex không thành công nếu tiện ích mở rộng shell bị tắt (chúng được bật theo mặc định). được xác định Biến đổiĐiều kiện được thỏa mãn nếu Biến đổi xác định. biểu thức Lệnh và tất cả các tham số của nó để xử lý trên dòng lệnh khi thực thi câu lệnh khác. /? Hiển thị trợ giúp trên dòng lệnh.

Ghi chú

  • Nếu điều kiện được chỉ định trong lệnh nếu như, được thực thi thì lệnh theo điều kiện sẽ được thực thi. Nếu điều kiện không được đáp ứng, lệnh được chỉ định trong câu lệnh nếu như, bị bỏ qua và quyền điều khiển chuyển sang lệnh của người vận hành khác, nếu nó được chỉ định.
  • Khi chương trình thoát ra, nó sẽ trả về mã thoát. Sử dụng tham số mức độ lỗi mã thoát có thể được sử dụng làm điều kiện.
  • Sử dụng lệnh được xác định Biến đổi

    Khi sử dụng lệnh được xác định Biến đổi ba biến sau đây được thêm vào: % mức lỗi%, %cmdcmdline%%cmdextversion%.

    % mức lỗi% mức độ lỗi trừ khi đã có biến môi trường có tên ERRORLEVEL. Trong trường hợp này, giá trị của nó sẽ được sử dụng. Ví dụ sau đây cho thấy việc sử dụng giá trị mức độ lỗi sau khi thực hiện chương trình bó:

    goto câu trả lời%errorlevel% :answer0 echo Mã trả về chương trình là 0:answer1 echo Mã trả về chương trình là 1 goto end:end echo Xong!

    Toán tử so sánh op_so sánh cũng có thể được sử dụng như thế này:

    nếu %errorlevel% LEQ 1 thì được

    %cmdcmdline%được thay thế bằng dòng lệnh ban đầu được truyền tới Cmd.exe trước khi được Cmd.exe xử lý, trừ khi đã có biến môi trường có tên cmdcmdline. Trong trường hợp này, giá trị sẽ được sử dụng cmdcmdline.

    %cmdextversion%được thay thế bằng một chuỗi biểu diễn giá trị hiện tại chuyển đổi cmdex trừ khi đã có biến môi trường có tên CMDEXTVERSION. Trong trường hợp này, giá trị của nó sẽ được sử dụng.

  • Sử dụng toán tử khác

    Nhà điều hành khác phải được đặt trên cùng dòng với lệnh nếu như. Ví dụ:

    NẾU EXIST tên tệp. (del tên tệp.) ELSE (tên tệp echo. bị thiếu.)

    del phải kết thúc bằng một dòng mới:

    NẾU EXIST tên tệp. xóa tên tập tin. ELSE tên tệp tiếng vang. vắng mặt

    Ví dụ dưới đây sẽ không hoạt động vì lệnh khác phải ở cùng dòng với lệnh nếu như:

    NẾU EXIST tên tệp. xóa tên tập tin. ELSE tên tệp tiếng vang. vắng mặt

    Nếu bạn cần đặt toàn bộ câu lệnh trên một dòng, bạn có thể sử dụng dạng đúng sau đây của câu lệnh gốc:

    NẾU tên tệp EXIST (tên tệp del) ELSE tên tệp echo bị thiếu

Ví dụ

Nếu không tìm thấy tệp Product.dat, thông báo sau sẽ xuất hiện:

nếu không tồn tại Product.dat echo Không tìm thấy tệp dữ liệu

Trong ví dụ bên dưới, nếu xảy ra lỗi khi định dạng đĩa ở ổ A, thông báo lỗi sẽ được hiển thị:

:begin @echo off format a: /s if not errorlevel 1 goto end echo Lỗi trong quá trình định dạng. :end echo Kết thúc chương trình hàng loạt.

Nếu không có lỗi xảy ra, sẽ không có thông báo lỗi nào được hiển thị.

Đội nếu như không thể được sử dụng trực tiếp để kiểm tra sự tồn tại của một thư mục, nhưng một thiết bị (NUL) tồn tại trong mỗi thư mục. Do đó, sự tồn tại của một thư mục có thể được kiểm tra như dưới đây. Ví dụ sau kiểm tra sự tồn tại của một thư mục:

nếu tồn tại c:mydir\nul goto quá trình

Điều kiện xử lý trong chương trình batch

Cú pháp

nếu như [không] mức độ lỗi con số đội [khác sự biểu lộ]

nếu như [không] dòng 1== dòng 2 đội [khác sự biểu lộ]

nếu như [không] hiện hữu tên tập tin đội [khác sự biểu lộ]

Nếu tiện ích mở rộng shell được bật, nên sử dụng cú pháp sau:

nếu như [/Tôi] dòng 1 op_so sánh dòng 2 đội [khác sự biểu lộ]

nếu như chuyển đổi cmdex con số đội [khác sự biểu lộ]

nếu như được xác định Biến đổi đội [khác sự biểu lộ]

Tùy chọn

not Chỉ định rằng lệnh sẽ chỉ được thực thi nếu điều kiện không được đáp ứng. mức độ lỗi con sốĐiều kiện là đúng nếu lệnh trước đó được trình thông dịch lệnh Cmd.exe xử lý hoàn thành với mã bằng hoặc lớn hơn con số. command Lệnh cần được xử lý nếu điều kiện được đáp ứng. dòng 1== dòng 2Điều kiện được thỏa mãn nếu đường dòng 1dòng 2 phù hợp. Các chuỗi có thể được đặt rõ ràng hoặc có thể là các biến hàng loạt (ví dụ: %1 ). Chuỗi rõ ràng không cần phải trích dẫn. hiện hữu tên tập tinĐiều kiện là đúng nếu có một tệp có tên tên tập tin. so sánh_op Toán tử so sánh ba chữ số. Bảng sau liệt kê các giá trị hợp lệ op_so sánh. /i So sánh các chuỗi mà không tính đến trường hợp ký tự. Tham số /Tôi có thể được sử dụng trong xây dựng chuỗi1== chuỗi2đội nếu như. Những so sánh này là chung chung. Nếu như dòng 1, Và dòng 2 bao gồm các chữ số, các chuỗi được chuyển đổi thành số và việc so sánh các số được thực hiện. chuyển đổi cmdex con sốĐiều kiện chỉ đúng nếu số phiên bản nội bộ được liên kết với phần mở rộng shell Cmd.exe bằng hoặc lớn hơn con số. phiên bản đầu tiên là số 1. Số phiên bản tăng thêm 1 khi có những thay đổi đáng kể đối với phần mở rộng shell. Điều kiện với chuyển đổi cmdex không thành công nếu tiện ích mở rộng shell bị tắt (chúng được bật theo mặc định). được xác định Biến đổiĐiều kiện được thỏa mãn nếu Biến đổi xác định. biểu thức Lệnh và tất cả các tham số của nó để xử lý trên dòng lệnh khi thực thi câu lệnh khác. /? Hiển thị trợ giúp trên dòng lệnh.

Ghi chú

  • Nếu điều kiện được chỉ định trong lệnh nếu như, được thực thi thì lệnh theo điều kiện sẽ được thực thi. Nếu điều kiện không được đáp ứng, lệnh được chỉ định trong câu lệnh nếu như, bị bỏ qua và quyền điều khiển chuyển sang lệnh của người vận hành khác, nếu nó được chỉ định.
  • Khi chương trình thoát ra, nó sẽ trả về mã thoát. Sử dụng tham số mức độ lỗi mã thoát có thể được sử dụng làm điều kiện.
  • Sử dụng lệnh được xác định Biến đổi

    Khi sử dụng lệnh được xác định Biến đổi ba biến sau đây được thêm vào: % mức lỗi%, %cmdcmdline%%cmdextversion%.

    % mức lỗi% mức độ lỗi trừ khi đã có biến môi trường có tên ERRORLEVEL. Trong trường hợp này, giá trị của nó sẽ được sử dụng. Ví dụ sau đây cho thấy việc sử dụng giá trị mức độ lỗi sau khi thực hiện chương trình bó:

    đi tới câu trả lời%errorlevel%
    :trả lời0
    echo Mã trả về của chương trình là 0
    :trả lời 1
    echo Mã trả về của chương trình là 1
    kết thúc
    :kết thúc
    tiếng vang Xong!

    Toán tử so sánh op_so sánh cũng có thể được sử dụng như thế này:

    Nếu %errorlevel% LEQ 1 thì được

    %cmdcmdline%được thay thế bằng dòng lệnh ban đầu được truyền tới Cmd.exe trước khi được Cmd.exe xử lý, trừ khi đã có biến môi trường có tên cmdcmdline. Trong trường hợp này, giá trị sẽ được sử dụng cmdcmdline.

    %cmdextversion%được thay thế bằng một chuỗi biểu diễn giá trị hiện tại chuyển đổi cmdex trừ khi đã có biến môi trường có tên CMDEXTVERSION. Trong trường hợp này, giá trị của nó sẽ được sử dụng.

  • Sử dụng toán tử khác

    Nhà điều hành khác phải được đặt trên cùng dòng với lệnh nếu như. Ví dụ:

    NẾU EXIST tên tệp. (del tên tệp.) ELSE (tên tệp echo. bị thiếu.)

    del phải kết thúc bằng một dòng mới:

    NẾU EXIST tên tệp. xóa tên tập tin. ELSE tên tệp tiếng vang. vắng mặt

    Ví dụ dưới đây sẽ không hoạt động vì lệnh khác phải ở cùng dòng với lệnh nếu như:

    NẾU EXIST tên tệp. xóa tên tập tin. ELSE tên tệp tiếng vang. vắng mặt

    Nếu bạn cần đặt toàn bộ câu lệnh trên một dòng, bạn có thể sử dụng dạng đúng sau đây của câu lệnh gốc:

    NẾU tên tệp EXIST (tên tệp del) ELSE tên tệp echo bị thiếu

Ví dụ

Nếu không tìm thấy tệp Product.dat, thông báo sau sẽ xuất hiện:

nếu không tồn tại Product.dat echo Không tìm thấy tệp dữ liệu

Trong ví dụ bên dưới, nếu xảy ra lỗi khi định dạng đĩa ở ổ A, thông báo lỗi sẽ được hiển thị:

:bắt đầu
@echo tắt
định dạng a: /s
nếu không phải lỗi cấp 1 thì hãy kết thúc
echo Lỗi định dạng.
:kết thúc
echo Kết thúc chương trình hàng loạt.

Nếu không có lỗi xảy ra, sẽ không có thông báo lỗi nào được hiển thị.

Đội nếu như không thể được sử dụng trực tiếp để kiểm tra sự tồn tại của một thư mục, nhưng một thiết bị (NUL) tồn tại trong mỗi thư mục. Do đó, sự tồn tại của một thư mục có thể được kiểm tra như dưới đây. Ví dụ sau kiểm tra sự tồn tại của một thư mục:

nếu tồn tại c:mydir\nul goto quá trình