DOS批处理⾼级教程(⼆)DOS循环:语句命令FOR、IF
前⾔
前⾯我们已经熟悉了基本的命令和基本符号, 对简单的DOS批处理脚本都已经有了初步的了解, 本节, 我们来讲述FOR命令⽤法及相关的实例, 写出更好的、可视性更强的脚本。
上⼀章的链接
第⼆章 FOR命令详解
⼀、基本格式
FOR %%variable IN (set) DO command [command-parameters]
下⾯的各⾃参数, 就不加赘述了, 直接通过实例描述运⾏理解。
⼆、参数 /d 主要搜索匹配⽬录
@echo off
for /d %%i in (c:\*) do echo %%i
pause
三、参数 /R 搜索指定⽬录树中的匹配⽂件
@echo off
for /d %%i in () do echo %%i
pause
枚举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 传递每个⽂件每⼀⾏的第⼀个空⽩分隔符号。跳过空⾏。
rem ⾸先建⽴临时⽂件
echo ;注释⾏,这是临时⽂件,⽤完删除 &
echo 11段12段13段14段15段16段 >&
echo 21段,22段,23段,24段,25段,26段 >&
echo 31段-32段-33段-34段-35段-36段 >&
FOR /F"eol=; tokens=1,3* delims=,- "%%i in () do echo %%i %%j %%k
Pause
'''-> demo2.bat'''
@echo off
FOR /F"eol= delims="%%i in () do echo %%i
Pause
'''demo3.bat '''
@echo off
FOR /F"delims="%%i in ('net user') do @echo %%i
pause
第三章 FOR命令中的变量
都不⼀⼀列举了, 都根据格式试验下即可。 另外也可以在控制台中查询。⼀、 ~I - 删除任何引号(“),扩展 %I
FOR /F"delims="%%i IN () DO echo %%~i
pause
⼆、 %~fI - 将 %I 扩展到⼀个完全合格的路径名
FOR /F"delims=="%%i IN ('dir /b') DO @echo %%~fi
pause
三、 %~dI - 仅将 %I 扩展到⼀个驱动器号
四、 %~pI - 仅将 %I 扩展到⼀个路径
五、 %~nI - 仅将 %I 扩展到⼀个⽂件名
六、 %~xI - 仅将 %I 扩展到⼀个⽂件扩展名
七、 %~sI - 扩展的路径只含有短名
⼋、 %~aI - 将 %I 扩展到⽂件的⽂件属性
九、 %~tI - 将 %I 扩展到⽂件的⽇期/时间
⼗、 %~zI - 将 %I 扩展到⽂件的⼤⼩
⼗⼀、 %~$PATH:I
第六章 IF命令讲解
略
主要是熟悉, if和增强if即可; 前⾯已经举过不少例⼦了
if not exist "c:\test" (echo存在⽂件) ELSE echo不存在⽂件
pause
//2
@echo off
set /p var=请输⼊⼀个数字:
if%var%LEQ4 (echo我⼩于等于4) ELSE echo我不⼩于等于4
pause
批处理文件注释后记
关于更深⼊的DOS批处理教程请看下⼀章, 都有⼤致了解, 回来查询相关命令并熟悉也不失为⼀个⽅法。本⽂链接:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论