如何在Batch中循环?

时间:2011-04-08 17:58:24

标签: windows loops batch-file dos

我想创建像这样的东西

dup.bat infile outfile times

示例用法是

dup.bat a.txt a5.txt 5

在它会创建文件a5.txt,其内容为a.txt重复5次

但是我不知道如何批量循环,怎么做?

3 个答案:

答案 0 :(得分:11)

你可以像这样循环:

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

然后要获取输入文件并重复它,您可以使用MORE重定向将输入文件的内容附加到输出文件。请注意,这假设这些是文本文件。

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

答案 1 :(得分:3)

对于命令行参数

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

要做一个简单的for循环,请从input文件读入,然后写入output文件:

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

您也可以通过命令行执行此操作,而不是接收输出文件:

dup.bat a.txt 5 > a5.txt

答案 2 :(得分:0)

叹息

紧凑型设计:

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)

易读:

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
)

设置你的计数器(次= 5) 启动子程序开始 如果你的计数器不等于0,读a.txt并将其内容APPEND到a5.txt,然后将你的计数器递减1.这将重复五次,直到你的计数器等于0,然后它将清理你的变量并结束脚本。 SET ENABLEDELAYEDEXPANSION对于在循环中增加变量非常重要。