Windows toplu iş dosyasında nasıl döngü oluşturuyorsunuz?


170

Windows toplu iş dosyasındaki FOR döngüsü için sözdizimi nedir?

Yanıtlar:


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

liste , boşluk, virgül veya noktalı virgülle ayrılmış öğelerin listesidir.

komut herhangi bir dahili veya harici komut, toplu iş dosyası veya hatta OS / 2 ve NT'de komutların bir listesi olabilir

parametreleri komut için komut satırı parametrelerini içerir. Bu örnekte, komut, belirtilmişse parametreler kullanılarak listedeki her öğe için bir kez yürütülür.

Özel bir parametre türü (veya hatta komut) %% A'dır ve bu, listeden her bir eleman tarafından arka arkaya değiştirilir.

Gönderen döngüler İÇİN


3
Listeye aralığı (1 - 100) verebilir miyim?
Pradeep

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

Döngününüze [ parameters ]birden fazla satır eklemek istiyorsanız parens'i koyunfor
Frank Bryce

1
@ aaiezza, fikrini ikinci. Şu anda bu kanlı döngülerle savaşıyorum, tamamen beklenmedik bir şekilde çalışıyorum ve çıktıya bakan herhangi bir şeyi neyin kontrol ettiğini bilmiyorum. Korkunç şeyler. Yararlı, ama korkunç.
RockDoctor

224

X kez bir şey yapmak istiyorsanız, bunu yapabilirsiniz:

Örnek (x = 200):

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

1,1,200 anlamına geliyor:

  • Başlat = 1
  • Adım başına artış = 1
  • Bitiş = 200

17
Ekleme için teşekkürler. Örneğinizdeki başlangıç ​​değerini, artıştan farklı bir şeye değiştirirseniz daha açık olabilir.
Warren Stevens

7
Son değer kapsayıcıdır.
Roland Pihlakas

54

Tür:

for /?

ve birkaç sayfa yardım metni alacaksınız.


8
DOS / Windows'un farklı sürümlerini işlediğinden bunu kabul edilen cevaba tercih ederim. "Çünkü" yıllar içinde oldukça önemli ölçüde geliştirildi ve soru hangi sürüm (ler) in hedeflendiğini veya hangi senaryonun denendiğini söylemiyor.
Mattias Andersson

34

Bir komutu koşullu olarak birkaç kez gerçekleştirin.

  • sözdizimi-FOR-Files

    FOR %%parameter IN (set) DO command 
    
  • sözdizimi-FOR-Dosyalar-Path'de Köklendirildi

    FOR /R [[drive:]path] %%parameter IN (set) DO command 
    
  • sözdizimi-FOR-Klasörler

    FOR /D %%parameter IN (folder_set) DO command 
    
  • sözdizimi-FOR-Sayıların listesi

    FOR /L %%parameter IN (start,step,end) DO command 
    
  • sözdizimi-FOR-Dosya içeriği

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

    veya

    FOR /F ["options"] %%parameter IN ("Text string to process") DO command
    
  • sözdizimi-FOR-Komut Sonuçları

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

O

  • Bir veri kümesi alın
  • FOR Parametresini %%Gbu verinin bir kısmına eşit yapın
  • Bir komut gerçekleştirin (isteğe bağlı olarak parametrenin komutun bir parçası olarak kullanılması).
  • -> Her veri öğesi için tekrarlayın

Bir toplu iş programından ziyade komut satırında FOR komutunu kullanıyorsanız, yüzde işareti %Gyerine yalnızca bir işaret kullanın %%G.

FOR Parametreleri

  • İlk parametre tek bir karakter, örneğin G harfi kullanılarak tanımlanmalıdır.

  • FOR %%G IN ...

    FOR döngüsünün her yinelemesinde, IN ( ....)yan tümce değerlendirilir ve %%Gfarklı bir değere ayarlanır

    Bu deyim tek bir değerle sonuçlanırsa, %% G bu değere eşit olarak ayarlanır ve komut gerçekleştirilir.

    Cümle birden çok değerle sonuçlanıyorsa, her biri tutacak ek parametreler örtülü olarak tanımlanır. Bunlar otomatik olarak alfabetik sıraya göre atanır %%H %%I %%J... (örtük parametre tanımı)

    Parametre bir dosyaya başvuruyorsa, dosya adını / yolu / tarih / boyutu ayıklamak için gelişmiş değişken başvurusu kullanılabilir.

    Tabii ki alfabenin dışında herhangi bir harf seçebilirsiniz %%G. ancak yol adı biçimi harflerinden hiçbiriyle (a, d, f, n, p, s, t, x) çakışmadığı ve örtük parametreler olarak kullanılmak üzere en uzun çakışmayan harflerin çalışmasını sağladığı için iyi bir seçimdir .


1
Önceden ayarlanmış bir değişkenin içine girmek için döngü için nasıl kullanabilirim? Ben denedim / F "belirteçleri = 2 delims =," %% i in (% a%) yapmak (… .. ama bu işe yaramaz. "(Şu anda beklenmedikti") söyleyemedi
Shivani

Merhaba. %a%Normal bir dosya adı mı veriyor? Bu formatta size yardımcı olmak zor. Nasıl Sorulur bölümünü okuduktan sonra yeni bir soru sormaktan çekinmeyin .
J. Chomel

2
@jumping_monkey, FOR komutu, sayı yerine bir harfle (ör. %% G) tanımlanan parametre değişkenleri oluşturur. Bunlara Parametre Genişlemeleri yol biçimi de uygulanabilir. İki harf kümesi arasındaki karışıklığı önlemek için, harfleri (a, d, f, n, p, s, t, x, z) FOR parametreleri olarak kullanmaktan kaçının veya ÜST harf olan bir FOR parametre harfi seçin.
J. Chomel

Merhaba @ J.Chomel, So for example in a reference like %%~fG the %%G is the FOR parameter, and the ~f is the Parameter Expansion.Anladım (burada) [ ss64.com/nt/syntax-args.html ), teşekkürler. Şerefe arkadaşlar.
jumping_monkey

15

FOR size uygun kullanım örnekleri de dahil olmak üzere FOR döngüleri hakkında bilmeniz gereken her türlü bilgiyi verecektir.


13

Bu kodu deneyin:

@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

num1sayı, artırılacak sayıdır ve num2katma değer num1ve sonlandırıcı ise num1sonun biteceği değerdir . Bu ifadede ( if %num1%==%terminator% goto close) sonlandırıcı için farklı bir değer belirtebilirsiniz . Bu, boole ifadesinin yakın olması, boolean doğruysa işlem ve goto açık ise, boole yanlışsa işlemdir.


Bu anlaşılması en kolay olanıdır. Diğer cevaplar, komutların ve bayrakların ne yaptığı hakkında hiçbir açıklamaya yakındır. Sadece bir tür javascript için, toplu iş dosyaları sezgisel değildir.
1934286

5
@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

5

Gönderen FOR /?yardım doc:

FOR% değişken IN (set) DO komutu [komut parametreleri]

% değişken Tek harfli değiştirilebilir bir parametre belirtir.
(set) Bir veya daha fazla dosya kümesini belirtir. Joker karakterler kullanılabilir. command Her dosya için yürütülecek komutu belirtir.
command-parameters
Belirtilen komut için parametreleri veya anahtarları belirtir.

Bir toplu iş programında FOR komutunu kullanmak için,% değişkeni yerine %% değişkeni belirtin
. Değişken adları büyük / küçük harfe duyarlıdır, bu nedenle% i% I öğesinden farklıdır
.

Komut Uzantıları etkinse,
FOR komutunun aşağıdaki ek formları desteklenir:

% FOR / D değişken IN (set) DO komutu [komut parametreleri]

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

FOR / R [[sürücü:] yol]% değişken IN (set) DO komutu [komut parametreleri]

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% değişken IN (başlangıç, adım, bitiş) DO komutu [komut parametreleri]

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)                                     
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.