如何在批处理中循环?
问题描述:
我要创建这样的如何在批处理中循环?
dup.bat infile outfile times
例子用法是
dup.bat a.txt a5.txt 5
它会创建文件a5.txt有a.txt中的重复内容的5倍
但我不知道如何做批量循环,如何做到这一点?
答
你可以做这样的循环:
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%
)
答
对于命令行参数
set input=%1
set output=%2
set times=%3
要为循环做一个简单的,从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
答
叹息
紧凑的设计:
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并将其内容添加到a5.txt,然后将您的计数器减1。这将重复五次,直到您的计数器r等于0,那么它会清理你的变量并结束脚本。 SET ENABLEDELAYEDEXPANSION对于在循环内增加变量很重要。
我有点不确定你想要完成什么。只需获取a.txt的内容并将其粘贴5次到a5.txt中?如果是这样,我认为使用PowerShell和Get-Content调用会更合适。作为参考,虽然批量循环只是为了。 http://ss64.com/nt/for.html – 2011-04-08 18:06:13
@Mike Soule批次是mor通用,我知道它可以使用它来完成。 – IAdapter 2011-04-08 20:24:03