2009-08-31 51 views
106

Windows批處理文件中FOR循環的語法是什麼?如何在Windows批處理文件中循環?

+18

這是Google中「批處理文件循環」的第一個結果。它是否使它成爲一個無限循環?遞歸搜索?我很困惑! – Ben 2013-03-06 07:49:43

回答

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

列表是任何元素的列表,由任一空間,逗號或分號分隔。

命令可以是任何內部或外部的命令,批處理文件或甚至 - 在OS/2和NT - 命令

參數的列表包含命令的命令行參數。 在這個例子中,對於列表中的每個元素,將使用參數(如果指定)執行一次命令。

一個特殊類型的參數(甚至是命令)是%% A,它將被列表中的每個元素連續替換。

FOR loops

+1

我可以在列表中給出範圍(1到100)嗎? – Pradeep 2009-08-31 04:48:56

+18

'FOR/L%x IN(1,1,100)DO ...' – Joey 2009-08-31 08:49:20

+0

如果你想在'for'循環中包含多行代碼,請在'[參數]周圍放置參數 – 2015-10-22 19:57:01

39

類型:

for /? 

,你會得到幫助文本的幾頁。

+4

我比接受的答案更喜歡這個,因爲它處理不同版本的DOS/Windows。 「For」在過去幾年中得到了非常顯着的提升,問題並未說明目標版本是什麼,也沒有說明正在嘗試什麼樣的情況。 – 2012-09-27 03:35:13

141

如果你想要做的事x次,你可以這樣做:

例(X = 200):

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

1,1,200表示:

  • 開始= 1
  • I每步= 1
  • 結束ncrement = 200
+14

感謝您的加入。如果將示例中的起始值更改爲與增量不同的值,可能會更清楚。 – 2013-12-13 15:28:52

+4

最終值包含在內。 – 2016-12-11 02:41:23

11

FOR會給你,你永遠需要了解FOR循環,包括適當的用法示例的任何信息。

9

嘗試此代碼:

@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將遞增的數量和num2是添加到num1和終止子的值是其中num1將結束值。您可以在此聲明中指示終止符的不同值(if %num1%==%terminator% goto close)。這是布爾表達式goto close是進程,如果布爾值爲true並且打開是進程,如果布爾值爲false。

+0

你不能使用'FOR'命令嗎? – 2016-11-30 16:45:21

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

有條件地執行多次命令。

  • 在路徑

    FOR /R [[drive:]path] %%parameter IN (set) DO command 
    
  • 語法-FOR-文件夾

    FOR /D %%parameter IN (folder_set) DO command 
    
  • 語法-FOR-文件

    FOR %%parameter IN (set) DO command 
    
  • 語法-FOR-文件層次語法-FOR -list數字

    FOR /L %%parameter IN (start,step,end) DO command 
    
  • 語法-FOR-文件內容

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

    FOR /F ["options"] %%parameter IN ("Text string to process") DO command 
    
  • 語法-FOR-命令結果

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

  • 以使一個用於參數%%G等於數據
  • 執行命令的一些部分(任選地使用的參數作爲命令的一部分)的一組數據
  • 的。
  • - >數據

的每個項目重複。如果你使用的是在命令行,而不是在一個批處理程序指令,只使用一個百分號:中%G代替%%G

FOR參數

  • 第一個參數必須使用一個單獨的字符被定義爲,例如字母G.

  • FOR %%G IN ...

    在FOR的每次迭代循環,評估IN (....)子句並將%%G設置爲不同的值

    如果該子句產生單個值,則%% G設置爲等於該值,並執行該命令。

    如果子句導致多個值,則會隱式定義額外的參數以保存每個參數。這些按字母順序自動分配%%H %%I %%J ...(隱式參數定義)

    如果參數引用文件,則可以使用增強型變量引用來提取文件名/路徑/日期/大小。

    你當然可以選擇除%%G以外的其他字母。但它是一個不錯的選擇,因爲它不會與任何路徑名格式字母(a,d,f,n,p,s,t,x)相沖突,並提供最長的非衝突字母作爲隱式參數。

1

FOR /?從幫助文檔:

FOR%變量IN(組)DO命令[命令參數]

%變量指定一個單一的字母替換的參數。
(set)指定一組一個或多個文件。可以使用通配符。 command指定要爲每個文件執行的命令。
命令參數
指定指定命令的參數或開關。

要在批處理程序中使用FOR命令,請指定%%變量%
%變量。變量名稱區分大小寫,因此%i與%I不同

如果命令擴展被啓用,以下附加
形式FOR命令支持的:

FOR IN(組)/ d%變量DO命令[命令參數]

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

FOR/R [[drive:]路徑]%變量IN(設置)DO命令[命令參數]

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%變量IN ,步驟,結束)DO命令[命令參數]

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)