DOS批处理高级教程(二) DOS循环: 语句命令FOR、IF

前言

前面我们已经熟悉了基本的命令和基本符号, 对简单的DOS批处理脚本都已经有了初步的了解, 本节, 我们来讲述FOR命令用法及相关的实例, 写出更好的、可视性更强的脚本。

上一章的链接
DOS批处理高级教程(一) 批处理基础

第二章 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 传递每个文件每一行的第一个空白分隔符号。跳过空行。

@echo off
rem 首先建立临时文件test.txt
echo ;注释行,这是临时文件,用完删除 >test.txt
echo 111213141516段 >>test.txt
echo 21段,22段,23段,24段,25段,26段 >>test.txt
echo 31段-32段-33段-34段-35段-36段 >>test.txt
FOR /F "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%k
Pause
Del test.txt

'''-> demo2.bat'''
@echo off
FOR /F "eol= delims=" %%i in (test.txt) 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 (temp.txt) DO echo  %%~i
pause
del temp.txt

二、 %~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即可; 前面已经举过不少例子了

@echo off
if not exist "c:	est" (echo 存在文件) ELSE echo 不存在文件
pause

//2
@echo off
set /p var=请输入一个数字:
if %var% LEQ  4 (echo 我小于等于4) ELSE echo 我不小于等于4
pause

后记

以后有相关非常好的脚本, 并且能充分表达出含义的补上, 目前没有这么多需求
参考文章
http://blog.csdn.net/lanbing510/article/details/7461073

关于更深入的DOS批处理教程请看下一章, 都有大致了解, 回来查询相关命令并熟悉也不失为一个方法。

DOS批处理高级教程(三) : 批处理变量和set命令详解
本文链接:

http://blog.csdn.net/mdeditor#!postId=59140530

原文地址:https://www.cnblogs.com/actanble/p/6713422.html