5 lệnh IF giúp sử dụng Batch script thông thái hơn

Nếu phải thực hiện nhiều công việc với các file batch trên Windows, lệnh IF là công cụ rất mạnh mẽ giúp tăng tính linh hoạt cho các script này. Bài viết này sẽ giới thiệu các bạn 5 lệnh IF sử dụng cho file batch cùng với cú pháp chính xác và ví dụ cụ thể cho từng câu lệnh.

1. So sánh giá trị

Một trong những điều cơ bản người dùng thường làm trong một batch script là so sánh hai giá trị và thực hiện theo một loạt các hành động khác nhau tùy thuộc vào so sánh.

Ví dụ, giả sử bạn muốn viết một batch script để kiểm tra kích thước ổ cứng máy tính hàng ngày. Nếu ổ cứng có dung lượng dưới 3 GB, bạn muốn nhận báo cáo qua email cho biết "Không gian ổ cứng quá thấp".

Để tạo một script so sánh không gian ổ cứng còn trống với không gian giới hạn, bạn copy batch script sau và lưu nó dưới dạng file .bat.

@echo off set DriveLimit=300000000 for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x Echo FreeSpace="%FreeSpace%" Echo Limit="%DriveLimit%" If %FreeSpace% GTR %DriveLimit% ( Echo There is enough free space. ) else ( Echo Not enough free space. )

WMIC là thành phần Windows Management Instrumentation của Windows, đi kèm với một loạt các lệnh được sử dụng để lấy thông tin máy tính. Đây là cách lệnh “wmic” lấy không gian “logicaldisk” và đặt nó vào biến FreeSpace. Bây giờ bạn chỉ cần thay thế dòng "Echo Not enough free space" bằng lệnh blat email để gửi cảnh báo.

Cuối cùng, thiết lập script này thành batch job (hàng loạt các bước trong một quá trình hàng loạt) lên lịch chạy hàng ngày.

2. So sánh chuỗi

Một công việc nữa bạn có thể sử dụng lệnh IF trong file batch là so sánh chuỗi. Trong ví dụ dưới đây, bạn sẽ thấy cách kiểm tra phiên bản Windows sử dụng một batch job. Các kiểm toán viên IT sử dụng script này khi cần chạy nhanh một script để kiểm tra hệ điều hành hiện tại là mới nhất hoặc cần nâng cấp không.

Dưới đây là script:

@echo off for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j if "%version%" == "6.0" echo Windows Vista. if "%version%" == "6.1" echo Windows 7 if "%version%" == "6.2" echo Windows 8 if "%version%" == "6.3" echo Windows 8.1 if "%version%" == "10.0" echo Windows 10.

Đây là kết quả đầu ra của script này.

Đầu ra của lệnh

Nếu xem tất cả các thông tin lấy được từ một lệnh WMIC, bạn có thể chọn thông tin giám sát máy tính từ số liệu thống kê này, từ đó sử dụng các batch job được lên lịch trình để kiểm tra những thông tin này.

3. Kiểm tra sự tồn tại của một file

Một trường hợp hữu ích nữa của lệnh IF trong file batch là nó được dùng để kiểm tra sự tồn tại của một file dữ liệu. Nhiều khi batch job được sử dụng làm công cụ giám sát, được lên lịch trình để kiểm tra các file dữ liệu mới trong một thư mục cụ thể. Sau đó, batch job sẽ sao chép file đó sang một vị trí khác để thực hiện xử lý hoặc khởi chạy một số script Windows để xử lý file trong đầu ra Excel.

Sử dụng một file batch để kiểm tra sự tồn tại của một file trong thư mục rất dễ dàng và nhanh chóng. Đây là script được sử dụng. 

@echo off if exist c:\temp\datafile.txt ( %WINDIR%\SysWOW64\cmd.exe cscript LoadToExcel.vbs ) else ( rem file doesn't exist )

So sánh IF EXISTS rất hữu ích, ví dụ: nếu có một hệ thống hoặc ứng dụng đang chạy, tạo ra các bản ghi lỗi mới trong một thư mục cụ thể khi xảy ra sự cố, bạn có thể chạy một batch job thường xuyên để theo dõi mỗi khi bản ghi lỗi mới được tạo ra để gửi cảnh báo.

4. Kiểm tra lệnh thực hiện không thành công

Một công dụng của batch script mà ít dân IT hoặc lập trình viên sử dụng là kiểm tra lỗi. Có rất nhiều batch job thực hiện các công việc IT quan trọng như sao lưu các file hoặc chạy các hoạt động sao chép file. Khi các batch job này thực hiện không thành công, hệ thống xảy ra lỗi và người dùng biết đã xảy ra vấn đề.

Do đó, bạn cần thiết lập để nhận thông báo khi batch job không thực hiện được lệnh trước khi hệ thống xảy ra lỗi và nhận biết được vấn đề để có thể chủ động khắc phục sự cố.

Bạn có thể làm điều này bằng cách sử dụng biến %errorlevel% mà hầu hết các ứng dụng và các lệnh trở lại sau khi chúng chạy. Để sử dụng biến này, bạn chỉ cần thêm lệnh vào sau lệnh IF %ERRORLEVEL%. Nếu ứng dụng hoặc lệnh trả lại một số không, có nghĩa là không có vấn đề xảy ra, nếu không, bạn sẽ nhận được email cảnh báo.

@echo off xcopy C:\somefolder E:\backupfolder IF %ERRORLEVEL% NEQ 0 <blat command to send email>

Bạn có thể viết một bản ghi lỗi để kiểm tra mỗi ngày hoặc khởi chạy ứng dụng hoặc lệnh thứ hai để sao chép sử dụng một lệnh thay thế. Tất cả các công việc trên đều được thực hiện bởi IF %ERRORLEVEL%.

5. Kiểm tra các tham số còn thiếu

Câu lệnh IF hữu ích cuối cùng không phải là lệnh cụ thể, nhưng để kiểm tra xem script có nhận được các tham số đầu vào thích hợp không. Ví dụ: giả sử bạn đã viết một script thực hiện lệnh xcopy từ một thư mục đầu vào đến một thư mục mạng chung được một nhóm sử dụng. Người dùng chỉ cần làm theo tên script của bạn với các thông số xác định đường dẫn file cá nhân của họ.

Rõ ràng, bạn không thể thực hiện đúng script của mình mà không có đường dẫn được chỉ định, vì vậy bạn có thể đặt một câu lệnh IF ở đầu script để chắc chắn rằng cả hai tham số đều được nhập vào. Đây là lệnh được sử dụng:

@echo off IF [%1]==[] ( GOTO sub_message ) ELSE ( xcopy %1 E:\backupfolder ) GOTO eof :sub_message echo You forgot to specify your path.
 :eof

Nếu chưa bao giờ sử dụng các tham số với batch script trước đây, biểu tượng phần trăm theo sau bởi một số đại diện cho biến tham số, %1 là tham số đầu tiên, %2 là tham số thứ hai, v.v…

Nhiều người bắt đầu sử dụng các batch job cho các nhiệm vụ đơn giản cần thực hiện theo trình tự. Với lệnh IF bạn có thể thực hiện các công việc này linh hoạt và đơn giản hơn rất nhiều.

Xem thêm: 

Thứ Ba, 03/04/2018 17:27
52 👨 1.788