QuânSysAd's Blog: vong lap
Hiển thị các bài đăng có nhãn vong lap. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn vong lap. Hiển thị tất cả bài đăng

17 tháng 7 2014

Giải thích vòng lặp for trong batch file

I. Ví dụ file weather.txt có nội dung như sau:

January,Snowy,02
February,Rainy,15
March,Sunny,25

Xem xét ví dụ sau

FOR /F "tokens=1,3 delims=," %%G IN (weather.txt) DO @echo %%G %%H


1. Giải thích câu lệnh
-Lặp qua từng dòng trong file weather.txt.
-/F chỉ để lặp qua các tên file hoặc string, ở đây là string.
-Token ở đây là vị trí trường thông tin thứ nhất và thứ 3 được ngăn cách bởi dấu phẩy.
-delims chỉ ra dấu ngăn cách các trường (field) trong dòng text.
-%%G nghĩa là ứng với token 1 thì sẽ tương ứng %%G với trường thứ nhất, sau đó là %%H ứng với token 3 tức trường thứ 3

2. Một ví dụ khác

FOR /F "tokens=4 delims=," %%G IN ("deposit,$4500,123.4,12-AUG-09") DO @echo Date paid %%G


-Lặp một lần qua trường text, có 4 trường tuy nhiên chỉ lấy trường số 4 ngăn cách bởi dấu phẩy.
-Sau khi lấy sẽ gán cho G, và in G ra, kết quả là Date paid 12-AUG-09


3. Giải thích các tham số hình thức
-Trong bat file có cả thảy 10 tham số hình thức, bắt đầu từ %0 đến %9
-Trong file bat thì phải ghi dấu % 2 lần ví dụ %%0 %%1...%%9
-%0 ám chỉ tên file bat đang được thực hiện
-%1 ám chỉ tham số đầu vào thứ nhất tương ứng
-%2 ám chỉ tham số đầu vào thứ ba

4. Ta xem xét một ví dụ về tham số hình thức

A:\>COPY CON VANBAN.BAT
ECHO %0
MD %1
CD %1
COPY C:\%2.TXT
DIR A:

A:\>VANBAN TEXT BAOCAO

Ở đây có hai giá trị đầu vào, do vậy file bat sẽ hiểu là gán TEXT vào vị trí %1, BAOCAO vào vị trí %2
tương ứng
Vì thế chương trình sẽ hiểu như sau:

-Hiển thị câu: VANBAN
-Mở thư mục: MD TEXT
-Vào thư mục: CD TEXT
-Chép file BAOCAO.TXT từ ổ đĩa C
-Liệt kê tất cả các file trong đĩa A

5. Ví dụ gọi chính chương trình đang chạy hienthi.bat cho tới vô hạn.
@ECHO OFF
echo %~n0
PAUSE
call %0
PAUSE