|
FOR命令格式
for option %%i in set do command command-params
option有4个 /L /D /R /F
%%i变量名,可以是26字母中任意一个,区分大小写。批处理中为双%,cmd下为单%
set为一个或一组文件(命令),可使用通配符,即for循环所需遍历的集合
command为具体所执行的命令
params为命令所带参数
一、/D选项
/D是指定仅对目录而不是文件执行的for命令。例:FOR /D %%I IN (C:\*) DO @ECHO %%I 即为列举出C盘下所有目录(非隐藏),对文件不列举。再如:FOR /D %%I IN (C:\PRO*) DO @ECHO %%I 即为列举出所有以PRO开头的目录(非隐藏)。FOR /D %%I IN (???) DO @ECHO %%I 列举当前位置所有长度为三个字符的目录(非隐藏)。
二、/R选项
/R 递归
具体格式为FOR /R PATH %%I IN SET DO COMMAND CMD-PARAMS
PATH若没指明,即为当前目录。遍历PATH树中每一个目录。
SET为所要查找的文件名,可用通配符。若为一个点".", 则只枚举目录树,即把整个指定目录树(只目录)列举出来。
例如,FOR /R C:\ %%I IN (*.TXT) DO @ECHO %%I 即为列举C盘目录下(包括子目录)所有的TXT文件。
三、/L迭代
FOR /L %%I IN (初始值,增量,结束值) DO COMMAND CMD-PARAM
例如,FOR /L %I IN (1,1,3) DO @ECHO %I,即依次输出1 2 3
再如,FOR /L %I IN (1,1,66666) DO START CMD 此命令慎重测试。。
四、/F参数,FOR最强大的一个参数
格式:
FOR /F ["options"] %%i IN (file) DO command
FOR /F ["options"] %%i IN ("string") DO command
FOR /F ["options"] %%i IN ('command') DO command
file代表一个或多个文件
string 代表字符串
command代表命令
["options"] 可选
对于FOR /F %%i IN (file) DO command
file为文件名,按照官方的说法是,for会依次将file中的文件打开,并且在进行到下一个文件之前将每个文件读取到内存,按照每一行分成一个一个的元素,忽略空白的行。
例子:
for /f %%i in (a.txt) do echo %%i
for 会打开a.txt文件,读出所有行的内容(遇空格即继续读取下一行)作为一个SET,每行则为一个元素,循环执行其后的命令。
/F参数更强大之处在于 TOKEN DELIMS SKIP EOL
FOR /F "TOKENS=2, DELIMS=," %%I IN (A.TXT) DO @ECHO %%I 此命令显示文件A.TXT 每行以逗号分隔开的第二列
FOR /F "TOKENS=2,3 DELIMS=," %%I IN (A.TXT) DO @ECHO %%I %%J 显示文件A.TXT每行以逗号分隔开的第二、三列
SKIP 用于跳过文件中前几行 EOL 指定当一行以什么符号开始时就忽略该行
当文件名有空格时,如“A A.TXT”,需要在options中加入usebackq
----------------------------------------------------------
待续。。
|
|