for循环语句
for /d 参数 查询目录
for /d %%variable in (set) do command [command-parameters]
- 主要用于目录搜索, 不会搜索文件
- 只能搜索指定目录和缺省情况下的当前目录, 不能搜索子目录
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29@echo off
echo -------------------------------------------------------
:: 打印c盘目录
for /d %%i in (c:\*) do echo %%i
echo -------------------------------------------------------
:: 打印c盘目录五个字符的目录
for /d %%i in (?????) do echo %%i
echo -------------------------------------------------------
:: 如果路径有空格, 用双引号
for /d %%i in ("c:\Program files\*") do echo %%i
echo ------------------------------------------------------
:: 搜索以w开头的
for /d %%i in (c:\w*) do echo %%i
echo ------------------------------------------------------
:: 搜索以w开头的, 以s结尾的
for /d %%i in (c:\w*s) do echo %%i
echo ------------------------------------------------------
:: 删除当前目录下的文件夹
for /d %%i in (*) do rd /s /q "%%i"
:: 上面的可以写作如下, 测试成功后,把echo 去掉,这时执行命令才会生效,防止出错!
for /d %%i in (*)do echo rd /s /q "%%~fi"
pause
for /r 参数 遍历搜索
for /r [[drive:]path] %%variable IN (set) DO command [command-parameters]
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15echo ------------------------------------------------------
:: set 中的文件名如果含有通配符(?或*),则列举/R 参数指定的目录及其下面的所有子目录中与 set 相符合的
:: 所有文件,无相符文件的目录则不列举。
for /r %%i in (*.txt) do echo %%i
echo ------------------------------------------------------
:: set 中为具体文件名,不含通配符,则枚举该目录树(即列举该目录及其下面的所有子目录),
:: 而不管set 中的指定文件是否存在。这与前面所说的单点(.)枚举目录树是一个道理,
:: 单点代表当前目录,也可视为一个文件。
for /r %%i in (test.txt) do echo %%i
:: test6.txt不存在也枚举出来
for /r %%i in (test6.txt) do echo %%i
echo ------------------------------------------------------
:: 判断是否存在
for /r %%i in (test.txt) do if exist %%i echo %%i
for /l 参数 建立索引
for /l %%variable in (start,step,end) do command [command-parameters]
该语句中(start,step,end)表示以增量或者递减形式从开始到结束的一个数字序列
因此,(1,1,5)将产生序列1 2 3 4 5,(5,-1,1) 将产生序列5 4 3 2 1
例子:1
2
3
4
5
6echo ------------------------------------------------------
for /l %%i in (1,3,10) do echo %%i
echo ------------------------------------------------------
:: for /l %%i in (1,1,5) do start cmd
for /l %%i in (1,1,5) do md %%i