Bruke FOR Statement

July 1  by Eliza

FOR-setningen er en kommando som lar deg "loop" eller gjenta kommandoer flere ganger. Det er svært lik den FOR setningen gitt i flere programmeringsspråk. FOR-setningen brukes ofte i batch-filer, men det kan også brukes direkte på kommandolinjen.

Som en påminnelse, den generelle formen av FOR løkke er:

FOR% variabel IN (sett) DO kommando [kommandoparametere]

Der 'variabel' er et enkelt brev, '(sett)' spesifiserer et sett av en eller flere filer, er 'kommando' ledeteksten kommandoen som skal utføres for hver fil i settet, og "kommando-parametre 'er valgfri parametere som skal sendes til "kommando".

Så la oss si du har fått flere COM DLL-filer som du trenger for å melde seg på innen Windows 'Registry. Du kan sette dem alle i en mappe, og kan deretter kjøre følgende kommando fra i denne mappen:

C: \ DLL-filer> FOR% i IN (* .dll) DO regsvr32 / s% i

Hva dette betyr, for hver DLL-fil den finner i den gjeldende katalogen, er å kjøre regsvr32 program på den. (Den "/ s" bytter bare forteller regsvr32 å gjøre sitt arbeid i stillhet.) Variabelen brukes ("% i") er store og små bokstaver, og det forutsetter at verdien av hver DLL-fil i sving. Navnet på DLL-filen sendes deretter til regsvr32 program som bruker samme "% i" variable.

En variant av den generelle FOR løkke bruker / L-bryteren og har denne generelle form:

FOR / L% variabel IN (start, step, end) DO kommando [kommandoparametere]

Dette utfører en løkke der% variabel er først satt til «start» og økes med «steg» før den treffer verdien «slutt». (Denne bruken bør være veldig kjent for programmerere.) Så la oss si at du trenger å vise listen med tall fra 1 til 5. Du kan gjøre det på denne måten:

C: \> FOR / L% i IN (1,1,5) DOecho% i

En annen variant av FOR løkke bruker / D-bryteren og har denne generelle form:

FOR / D% variabel IN (sett) DO kommando [kommandoparametere]

Med denne varianten inneholder om "sett" wildcards, deretter kommandoen virker på katalognavn i stedet for filnavn. Dette vil være nyttig, for eksempel hvis du ønsket å kopiere et sett med filer fra en katalog treet og legge alle filene i en katalog.

For eksempel har jeg en katalog som heter \ Temp. Den inneholder underkataloger kalt \ Temp \ Temp2 og \ Temp \ Barry. Den \ Temp \ Barry og \ Temp \ temp2 kataloger inneholder filene jeg ønsker å kopiere. Hvis jeg ønsket å kopiere alle filene (uten katalogstrukturen) i \ Temp treet til en katalog som heter \ Files, kan jeg gjøre det slik:

C: \ Temp> FOR / D% i IN (*) DO Kopier% i \ * filer * \.

Jeg har igjen til slutt hva jeg tror er den mest esoteriske form av FOR loop. Det virker som du bruker / F bryteren vil tillate deg å gjøre nesten hva som helst-hvis du bare kan finne ut hvordan den skal brukes. Den generelle formen er:

FOR / F "alternativer"% variabel IN (`command`) DO kommando [kommandoparametere]

(Beklager det ikke alle passer på én linje.) Det er flere "alternativer du kan bruke, og den første 'kommando' (den omgitt av bakover apostrofer) kan være noen ledetekst kommando. Så her er ett eksempel på hvordan du bruker dette:

FOR / F "Usebackq Delims =="% i IN (`dir / bc: \ temp \ a * .tmp`) DOecho c: \ temp \% i | findstr / f: /" abc "

(Beklager det ikke har plass på én linje.) Denne kommandoen utfører en DIR / B-kommandoen på C: \ Temp \ A * .tmp. For hver fil den finner, reflekterer det filnavnet og rør det til findstr kommando, som ser for alle linjer som inneholder en "a", "b" eller "c". En ganske merkelig ting å gjøre, gitt, men minst viser det hvordan du kan bruke / F. Jeg foreslår at du gjør FOR /? For å få en komplett liste over hva alle alternativene er, og så er du i utgangspunktet bundet bare av fantasien på å finne ut hvordan den skal brukes.

Du kan også bruke FOR kommando i en batch-fil. Det eneste som er annerledes er at du doble% -signs, mens på kommandolinjen du bare bruke ett% -tegn. Hvis for eksempel det andre eksemplet ovenfor var å bli plassert i en batch-fil, vil det se ut som dette:

FOR / L %% i IN (1,1,5) DOecho %% jeg

Dette tipset (13196) gjelder for Windows 7 og 8.