:forNone
Rem --显示当前目录下与t*.*相匹配的文件(只显示文件名,不显示路径)
for %%i in (t*.*) do echo %%i
Rem --显示d:/mydocuments/目录下与*.doc相匹配的文
for %%i in (d:/mydocuments/*.doc) do @echo %%i
:for/l
for /l %a in (1,1,10) do xxxx
Rem --输出100,80,60,40,20
for /l %%i in (100,-20,1) do @echo %%i
:for/d
参数 /d (参数只能显示当前目录下的目录名字) (只会搜索指定目录下的目录,不会搜索再下一级的目录。)
--显示c盘根目录下的所有目录
for /d %%i in (c:/*) do echo %%i
--显示当前目录下名字只有1-3个字母的目录
for /d %%i in (???) do echo %%i
:for/r
参数 /R (搜索指定路径及所有子目录中与set相符合的所有文件)
格式:FOR /R [[drive:]path] %variable IN (set) DO command
此命令会搜索指定路径及所有子目录中与set相符合的所有文件,注意是指定路径及所有子目录。
1、set中的文件名如果含有通配符(?或*),则列举/R参数指定的目录及其下面的所用子目录中与set相符合的所有文件,无相符文件的目录则不列举。
2、如果set中为具体文件名,不含通配符,则枚举该目录树(即列举该目录及其下面的所有子目录)(并在后面加上具体的文件名),而不管set中的指定文件是否存在。
Rem --把C盘根目录,和每个目录的子目录下面全部的EXE文件都列出来了!!!!
for /r c:/ %%i in (*.exe) do echo %%i
Rem --枚举了c盘所有目录
for /r c:/ %%i in (boot.ini) do echo %%i
Rem --枚举d/backup目录
for /r d:/backup %%i in (1) do echo %%i
Rem --很好的搜索命令,列举boot.ini存在的目录
for /r c:/ %%i in (boot.ini) do if exist %%i echo %%i
:for/f
for命令带这个参数可以分析文件内容,字符串内容或某一命令输出的结果,并通过设置option得我们想要的结果。
格式:
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
或者,如果有 usebackq 选项:
FOR /F ["options"] %variable IN ("file-set") DO command [command-parameters]
FOR /F ["options"] %variable IN ('string') DO command [command-parameters]
FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]
Option关键字
::eol=; --忽略以分号打头的那些行;
eol=c
::skip=2 --忽略2行
skip=n
::[delims=, ] --指定用逗号,空格对字符串进行分隔。
delims=xxx
::m-n格式为一个范围
tokens=x,y,m-n
-----------------------------------------------------------------------------
Exp:a.txt
第1行第1列 第1行第2列 第1行第3列 第1行第4列 第1行第5列
第2行第1列 第2行第2列 第2行第3列
第3行第1列 第3行第2列
Instance
echo --读出a.txt里面的所有内容,把它作为一个集合,并且以每一行的%i(第一列)作为一个元素
echo 只显示a.txt的文件名称
for %%i in (a.txt) do echo %%i
echo 读取a.txt的内容,第一行第一列
for /f %%i in (a.txt) do echo %%i
echo 读取a.txt中的第一、二、三等行,并显示%%i %%j %%k %%l列
for /f "tokens=1,2* delims=, " %%i in (a.txt) do echo %%i %%j %%k %%l
for /f "tokens=2-10 delims=, " %%i in (a.txt) do echo %%i %%j %%k %%l
result:
第1行第1列 第1行第2列 第1行第3列 第1行第4列 第1行第5列 %l
第2行第1列 第2行第2列 第2行第3列 %l
第3行第1列 第3行第2列 %l
第1行第2列 第1行第3列 第1行第4列 第1行第5列
第2行第2列 第2行第3列
第3行第2列
以实际用例:
Crett $ adb shell getprop |grep -i "chip"
[ro.yunos.product.chip]:Amlogic
Crett $ for /f "tokens=3 delims=:[]" %%i in ('adb shell getprop^|findstr /i "ro.yunos.product.chip"') do set chip=芯片:%%i
Crett $ echo %chip%
芯片:Amlogic
Crett $ adb shell getprop |findstr /i "release"
[ro.bootimage.build.fingerprint]: [Xiaomi/queenchristina/queenchristina:6.0.1/MHC19J/338:user/release-keys]
[ro.build.description]: [queenchristina-user 6.0.1 MHC19J 338 release-keys]
[ro.build.fingerprint]: [Xiaomi/queenchristina/queenchristina:6.0.1/MHC19J/338:user/release-keys]
[ro.build.tags]: [release-keys]
[ro.build.version.release]: [6.0.1]
Crett $ for /f "tokens=2,3 delims=[]" %i in ('adb shell getprop ^|findstr /i "release"' ) do echo %i %j
Crett $ echo : Xiaomi/queenchristina/queenchristina:6.0.1/MHC19J/338:user/release-keys
: Xiaomi/queenchristina/queenchristina:6.0.1/MHC19J/338:user/release-keys
Crett $ echo : queenchristina-user 6.0.1 MHC19J 338 release-keys
: queenchristina-user 6.0.1 MHC19J 338 release-keys
Crett $ echo : Xiaomi/queenchristina/queenchristina:6.0.1/MHC19J/338:user/release-keys
: Xiaomi/queenchristina/queenchristina:6.0.1/MHC19J/338:user/release-keys
Crett $ echo : release-keys
: release-keys
Crett $ echo : 6.0.1
: 6.0.1