批处理命令提高二-for命令详解
一、基本格式
FOR %%variable IN (set) DO command [command-parameters]
二、参数 /d 主要搜索匹配目录
@echo off
for /d %%i in (c:\*) do echo %%i
pause
三、参数 /R 搜索指定目录树中的匹配文件
枚举C盘下所有的 .exe 程序, 如果不带c:\ 则表示为当前目录
@echo off
for /r c:\ %%i in (*.exe) do echo %%i
pause
四、参数 /L 按数字序列(start,step,end)循环
有过编程经验, 知道lispace, 或者 seq 的 知道这个列表推导式是什么了
@echo off
for /l %%i in (1,1,5) do @echo %%i
pause
五、参数 /F 处理命令输出、字符串及文件内容
\迭代及文件解析
使用文件解析来处理命令输出、字符串及文件内容。使用迭代变量定义要检查的内容或字符串,并使用各种options选项进一步修改解析方式。使用options令牌选项指定哪些令牌应该作为迭代变量传递。请注意:在没有使用令牌选项时,/F 将只检查第一个令牌。
文件解析过程包括读取输出、字符串或文件内容,将其分成独立的文本行以及再将每行解析成零个或更多个令牌。然后通过设置为令牌的迭代变量值,调用 for 循环。默认情况下,/F 传递每个文件每一行的第一个空白分隔符号。跳过空行。
for命令中变量:
(1)~I - 删除任何引号(“),扩展 %I
@echo off
for /f "delims=" %%i in (temp.txt) do echo %%~i
pause >nul
(2)%~fI - 将 %I 扩展到一个完全合格的路径名
for /f "delims==" %%i in ('dir /b') do @echo %%~fi
遍历输出当前文件夹
(3)%~dI - 仅将 %I 扩展到一个驱动器号
(4) %~pI - 仅将 %I 扩展到一个路径
(5) %~nI - 仅将 %I 扩展到一个文件名
(6) %~xI - 仅将 %I 扩展到一个文件扩展名
(7) %~sI - 扩展的路径只含有短名
(8)%~aI - 将 %I 扩展到文件的文件属性
(9)%~tI - 将 %I 扩展到文件的日期/时间
(10) %~zI - 将 %I 扩展到文件的大小
(11) %~$PATH:I