windows - hvordan man laver loop i batch?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne skabe noget som dette


dup.bat infile outfile times


eksempel brug ville være


dup.bat a.txt a5.txt 5


på det ville skabe fil a5.txt, der har indholdet af a.txt gentaget 5 gange


men jeg ved ikke hvordan man gør for loop i batch, hvordan man gør det?

Bedste reference


Du kan gøre sløjfen som denne:


SET infile=\%1
SET outfile=\%2
SET times=\%3

FOR /L \%\%i IN (1,1,\%times\%) DO (
    REM do what you need here
    ECHO \%infile\%
    ECHO \%outfile\%
)


Derefter for at tage inputfilen og gentage den, kan du bruge MORE med omdirigering for at tilføje indholdet af inputfilen til outputfilen. Bemærk dette forudsat at disse er tekstfiler.


@ECHO off
SET infile=\%1
SET outfile=\%2
SET times=\%3

IF EXIST \%outfile\% DEL \%outfile\%
FOR /L \%\%i IN (1,1,\%times\%) DO (
    MORE \%infile\% >> \%outfile\%
)

Andre referencer 1


For kommandolinje args


set input=\%1
set output=\%2
set times=\%3


For at gøre en enkel til loop, læs ind fra filen input og skriv til filen output:


FOR /L \%\%i IN (1,1,\%times\%) DO (
    FOR /F \%\%j IN (\%input\%) DO (
        @echo \%\%j >> \%output\%
    )      
)


I stedet for at indtaste en outputfil, kan du også gøre det via kommandolinjen:


dup.bat a.txt 5 > a5.txt

Andre referencer 2


suk


Kompakt design:


SETLOCAL ENABLEDELAYEDEXPANSION
SET times=5
:Beginning
IF \%times\% NEQ 0 (TYPE a.txt>>a5.txt & SET /a times=\%times\%-1 & GOTO Beginning) ELSE ( ENDLOCAL & set times= & GOTO:eof)


Nem læsning:


SETLOCAL ENABLEDELAYEDEXPANSION
SET times=5
:Beginning
IF \%times\% NEQ 0 (
TYPE a.txt>>a5.txt
SET /a times=\%times\%-1
GOTO Beginning
) ELSE (
ENDLOCAL
set times=
GOTO:eof
)


Indstil din tæller (tider=5)
Start underrutinen begynder
Hvis din tæller ikke svarer til 0, læs a.txt og tilføj dens indhold til a5.txt, og sænk derefter din tæller med 1. Dette gentages fem gange, indtil din tæller er lig med 0, så vil det rydde op på din variabel og afslutte scriptet .
SET ENABLEDELAYEDEXPANSION er vigtig for at øge variablerne i loops.