zoukankan      html  css  js  c++  java
  • 批处理for 的理解及例子

    前言

    首先for的代码形式是:

    for %i in (set) do command
    

    这里面有一些小知识知识点;

    比如说i是变量,那么i可以换成其他字符吗?答案是可以的。但是必须是26个字母中的其中一个。

    其中批处理是区分大小写的。

    for %i in (set) 与for %I in (set) 是不同的。

    其中(set) 是一个集合,每个元素之间,可以用空格、跳格、逗号、分号或等号分隔;

    然后一个极为关键的地方在于:

    在cmd窗口中:for %I in (command1) do command2 
    在批处理文件中:for %%I in (command1) do command2
    

    因为我们是开发人员,为了方便,还是选择第二种匹处理形式。

    下面介绍for的一些用法和给与一个例子做练习。

    for /L

    FOR /L %%i IN (1, 1, 10) DO (
        echo %%i
    )
    

    那么它会循环。

    命令格式为:

    FOR /L %%i IN (start, step, end) DO (
        
    )
    

    解释这个L是loop的意思。

    for /F

    FOR /F "tokens=1* delims=," %%a IN (a.txt) DO (
        echo %%a %%b
    )
    

    a.txt

    good,notgood
    do,notdo
    

    delim 是通过什么格式来切割行。

    比如说good,notgood,这里是通过,进行切割。

    tokens 是切割取那些元素,比如1-5,那么就是取1到5,这里的1*取1和后面全部作为一个整体,不再进行分割。

    来看下结果:

    来看其他两个参数:

    FOR /F "eol=d tokens=1* delims=," %%a IN (a.txt) DO (
        echo %%a %%b
    )
    

    eol 是过滤那些行,我这里过滤d开头的行。

    这样就ok了。

    FOR /F "skip=1 tokens=1* delims=," %%a IN (a.txt) DO (
        echo %%a %%b
    )
    

    skip 是跳过几行,我这里是跳过第一行就不贴了。

    下面是/f 的命令格式。

    FOR /F "eol=end_of_line, skip=num_of_lines, delims=delimiter, tokens=tokens " %%i IN (set) DO (
        
    )
    

    注:

    delims默认值是空格和跳格键,tokens 默认值是1,eol是:
    

    for /d

    @echo off
    for /d %%i in (c:/*) do echo %%i
    pause
    

    查询c目录所有目录,不包括子目录。

    for /r

    FOR /R c:/ %%i IN (*.exe) DO (
        echo %%i
    )
    

    查询c目录下所有的exe 文件,你懂得,挖地形式的寻找全部。

    例子

    A1:假设令 set str=I love,bbs;bathome=net,请分别显示出I、love、bbs、bathome和net这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。
    
    A2:条件同A1,要求最后只显示net这个字符串。目的:了解for语句的执行流程。
    

    A1:

    @echo off
    set str="I love,bbs;bathome=net"
    FOR /f "tokens=1-5 delims=,;= " %%a IN (%str%) DO (
        echo %%a %%b
    )
    pushd
    

    A2:

    @echo off
    set str="I love,bbs;bathome=net"
    FOR /f "tokens=1,* delims==" %%a IN (%str%) DO (
        echo %%b
    )
    pushd
    

    别人给出的答案,不用for

    A1:
    [Code]
    @echo off
    set str=I love,bbs;bathome.net
    for %%i in (%str%) do echo %%i
    pause>nul
    
    [Result]
    I
    love
    bbs
    bathome.net
    
    [Discussion]
    说明for语句将“空格、逗号、分号、等号”视作元素分隔符
    
    A2:
    [Code]
    @echo off
    set str=I love,bbs;bathome.net
    for %%i in (%str%) do (set a=%%i)
    echo %a%
    pause>nul
    显示输出最后一个。
    [Result]
    bathome.net
    

    上面是有问题的,不会用.进行切割。

    答案后续补齐,有点事出去一下。

  • 相关阅读:
    安卓输入法
    android问题
    速查
    Iphone幻灯片效果+背景音乐
    MBProgressHUD使用
    画图
    textmate 的快捷键
    设置Table Cell的背景图的类
    Objectc 一些代码规范
    效果收集
  • 原文地址:https://www.cnblogs.com/aoximin/p/12814820.html
Copyright © 2011-2022 走看看