2009-08-31 43 views

Trả lời

71
FOR %%A IN (list) DO command parameters 

danh sách là danh sách của bất kỳ yếu tố, cách nhau bằng một trong hai không gian, của dấu phẩy hoặc dấu chấm phẩy.

lệnh thể được bất kỳ lệnh, tập tin nội bộ hay bên ngoài hàng loạt hoặc thậm chí - trong OS/2 và NT - một danh sách các lệnh

thông số chứa các thông số dòng lệnh cho lệnh. Trong ví dụ này, lệnh sẽ được thực thi một lần cho mỗi phần tử trong danh sách, sử dụng các tham số nếu được chỉ định.

Một loại tham số đặc biệt (hoặc thậm chí lệnh) là %% A, sẽ được thay thế bởi từng phần tử trong danh sách liên tiếp.

Từ FOR loops

+1

Tôi có thể cung cấp phạm vi (1 đến 100) trong danh sách không? – Pradeep

+18

'FOR/L% x IN (1,1,100) DO ...' – Joey

+0

đặt parens xung quanh '[parameters]' nếu bạn muốn bao gồm nhiều dòng trong vòng lặp 'for' của bạn –

39

Loại:

for /? 

và bạn sẽ nhận được một vài trang văn bản trợ giúp.

+4

Tôi thích điều này hơn câu trả lời được chấp nhận bởi vì nó xử lý các phiên bản khác nhau của DOS/Windows. "Đối với" đã được tăng cường khá đáng kể, trong những năm qua, và câu hỏi không nói những gì phiên bản (s) là (đang) đang được nhắm mục tiêu cũng không phải những gì kịch bản đang được cố gắng. –

141

Nếu bạn muốn làm một cái gì đó x lần, bạn có thể làm điều này:

Ví dụ (x = 200):

FOR /L %%A IN (1,1,200) DO (
    ECHO %%A 
) 

1,1,200 có nghĩa là:

  • Bắt đầu = 1
  • I ncrement mỗi bước = 1
  • End = 200
+14

Cảm ơn bạn đã thêm. Có thể rõ ràng hơn nếu bạn thay đổi giá trị bắt đầu trong ví dụ của bạn thành một cái gì đó khác với số gia tăng. –

+4

Giá trị cuối cùng được bao gồm. –

11

FOR sẽ cung cấp cho bạn bất kỳ thông tin mà bạn sẽ cần phải biết về CHO vòng, trong đó có những ví dụ về việc sử dụng thích hợp.

9

Hãy thử mã này:

@echo off 
color 02 
set num1=0 
set num2=1 
set terminator=5 
:loop 
set /a num1= %num1% + %num2% 
if %num1%==%terminator% goto close 
goto open 
:close 
echo %num1% 
pause 
exit 
:open 
echo %num1% 
goto loop 

num1 là số được tăng lên và num2 là giá trị gia tăng để num1 và terminator là giá trị nơi num1 sẽ kết thúc. Bạn có thể chỉ ra giá trị khác nhau cho terminator trong câu lệnh này (if %num1%==%terminator% goto close). Đây là biểu thức boolean goto close là quá trình nếu boolean là true và goto open là quá trình nếu boolean là false.

+0

Bạn không thể sử dụng lệnh 'FOR'? –

3
@echo off 
echo. 
set /p num1=Enter Prelim: 
echo. 
set /p num2=Enter Midterm: 
echo. 
set /p num3=Enter Semi: 
echo. 
set /p num4=Enter Finals: 
echo. 
set /a ans=%num1%+%num2%+%num3%+%num4% 
set /a avg=%ans%/4 
ECHO %avg% 
if %avg%>=`95` goto true 
:true 
echo The two numbers you entered were the same. 
echo. 
pause 
exit 
15

Điều kiện thực hiện lệnh nhiều lần.

  • cú pháp-FOR-Files

    FOR %%parameter IN (set) DO command 
    
  • cú pháp-FOR-Files-Rooted tại Đường dẫn

    FOR /R [[drive:]path] %%parameter IN (set) DO command 
    
  • cú pháp-FOR-Folders

    FOR /D %%parameter IN (folder_set) DO command 
    
  • cú pháp-FOR -list số

    FOR /L %%parameter IN (start,step,end) DO command 
    
  • nội dung cú pháp-FOR-File

    FOR /F ["options"] %%parameter IN (filenameset) DO command 
    

    hoặc

    FOR /F ["options"] %%parameter IN ("Text string to process") DO command 
    
  • cú pháp-FOR-Command Kết quả

    FOR /F ["options"] %%parameter IN ('command to process') DO command 
    

  • Hãy tập hợp các dữ liệu
  • Thực hiện một CHO Parameter %%G bằng một số phần của dữ liệu
  • Thực hiện một lệnh (tùy chọn sử dụng các tham số như là một phần của lệnh).
  • -> Lặp lại cho mỗi mục dữ liệu

Nếu bạn đang sử dụng các lệnh FOR tại dòng lệnh chứ không phải là trong một chương trình hàng loạt, sử dụng chỉ là một phần trăm dấu: %G thay vì %%G.

cho các thông số

  • Tham số đầu tiên phải được xác định bằng một ký tự, ví dụ như thư G.

  • FOR %%G IN ...

    Trong mỗi lần lặp của một CHO vòng lặp, mệnh đề IN (....) được đánh giá và %%G đặt thành một giá trị khác nhau

    Nếu mệnh đề này dẫn đến một giá trị duy nhất thì %% G được đặt bằng giá trị đó và lệnh được thực hiện.

    Nếu mệnh đề dẫn đến nhiều giá trị thì các thông số bổ sung được xác định ngầm định để giữ mỗi giá trị. Chúng được tự động gán theo thứ tự bảng chữ cái %%H %%I %%J ... (định nghĩa tham số ngầm)

    Nếu tham số tham chiếu đến một tệp thì có thể sử dụng tham chiếu biến nâng cao để trích xuất tên tệp/đường dẫn/ngày/kích thước.

    Bạn có thể chọn bất kỳ chữ cái nào trong bảng chữ cái ngoài %%G.nhưng nó là một lựa chọn tốt vì nó không xung đột với bất kỳ ký tự định dạng đường dẫn nào (a, d, f, n, p, s, t, x) và cung cấp các ký tự không xung đột dài nhất để sử dụng làm tham số ngầm .

1

Từ FOR /? giúp đỡ doc:

CHO biến% TRÊN (set) DO lệnh [lệnh thông số]

% biến Chỉ định một tham số có thể thay thế chữ cái.
(bộ) Chỉ định một tập hợp một hoặc nhiều tệp. Có thể sử dụng các ký tự đại diện. lệnh Chỉ định lệnh để thực hiện cho mỗi tệp.
thông số lệnh
Chỉ định thông số hoặc công tắc cho lệnh được chỉ định.

Để sử dụng lệnh FOR trong chương trình theo lô, hãy chỉ định %% variable thay vì
của% biến. Tên biến phân biệt chữ hoa chữ thường, vì vậy% i khác
từ% I.

Nếu lệnh Extensions được kích hoạt, thêm
hình thức sau đây của lệnh FOR được hỗ trợ:

FOR/D% biến TRÊN (set) DO lệnh [lệnh thông số]

If set contains wildcards, then specifies to match against directory 
names instead of file names.           

FOR/R [[drive:] path]% biến IN (set) DO command [command-parameters]

Walks the directory tree rooted at [drive:]path, executing the FOR  
statement in each directory of the tree. If no directory    
specification is specified after /R then the current directory is  
assumed. If set is just a single period (.) character then it   
will just enumerate the directory tree.        

FOR/L% variable IN (bắt đầu lệnh DO [lệnh tham số]

The set is a sequence of numbers from start to end, by step amount. 
So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would 
generate the sequence (5 4 3 2 1)          
Các vấn đề liên quan