how to do loop in Batch?

40,787

Solution 1

You can do the loop like this:

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%
)

Then to take the input file and repeat it, you could use MORE with redirection to append the contents of the input file to the output file. Note this assumes these are text files.

@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%
)

Solution 2

For command line args

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

To do a simple for loop, read in from the input file, and write to the output file:

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

Instead of taking in an output file, you could also do it via command line:

dup.bat a.txt 5 > a5.txt
Share:
40,787
IAdapter
Author by

IAdapter

Updated on June 09, 2020

Comments

  • IAdapter
    IAdapter almost 4 years

    I want to create something like this

    dup.bat infile outfile times
    

    example usage would be

    dup.bat a.txt a5.txt 5
    

    at it would create file a5.txt that has the content of a.txt repeated 5 times

    however I do not know how to do for loop in batch, how to do it?