学批处理当然要学到for了
看看他的基本格式
FOR 参数 %%变量名 IN (相关文件或命令) DO 执行的命令
参数:FOR有4个参数 /d /l /r /f 比较常用的是/f参数
%%变量名 :这个变量名可以是小写a-z或者大写A-Z,他们区分大小写哦~
IN:命令的格式,照写就是了!
(相关文件或命令) :FOR要把什么东西读取然后赋值给变量,不懂的话看下面的例子
do:命令的格式,照写就是了!
当然我们可以不加任何参数执行FOR,这个时候他可以加通配符号进行操作,看我的例子.
例子:
@echo off
for %%i in (c:\windows\*.txt) do echo %%i
pause
这个会打印c:\windows\目录下的全部TXT文件的文件名字.
cmd下:[在bat中,以下每个%都必须写成两个]
rem 输出两行,分别为两个单词Hello和World
for %a in (Hello,World) do echo %a
rem 输出1到10
for /l %a in (1,1,10) do echo %a
rem 列举d盘所有txt文件
for /r d: %a in (*.txt) do echo %a
rem 显示系统版本
for /f "tokens=3" %a in ('ver') do echo %a
rem 列举当前目录下的子目录
for /d %a in (*) do echo %a
真不明白你为什么要这么写
既然123.TXT里只有一个数字且一定是1-9中的一个,你只要把它读取出来赋给一个变量
然后用这个变量去复制文件就可以啦
FOR命令就是把读取的东西,然后赋值给变量。
FOR有4个参数/d、 /l 、 /r 、 /f
每个参数的意思分别如下:
/d:仅为目录
如果Set (也就是我上面写的"相关文件或命令")包含通配符(*和?),将对与Set相匹配的每个目录(而不是指定目录中的文件组)执行指定的Command。
/R:递归
进入根目录树[Drive:]Path,在树的每个目录中执行for语句。如果在/R后没有指定目录,则认为是当前目录。如果Set只是一个句点(.),则只枚举目录树。
/L:迭代数值范围
使用迭代变量设置起始值(Start#),然后逐步执行一组范围的值,直到该值超过所设置的终止值(End#)。/L将通过对Start#与End#进行比较来执行迭代变量。
/f:迭代及文件解析
使用文件解析来处理命令输出、字符串及文件内容。使用迭代变量定义要检查的内容或字符串,并使用各种ParsingKeywords选项进一步修改解析方式。