05-CMD_for命令详解_变量

来源:互联网 发布:spring启动时加载数据 编辑:程序博客网 时间:2024/04/29 13:59
for命令中的变量


先把 FOR 的变量全部列出来: 
     ~I          -  删除任何引号("),扩展 %I 
     %~fI        -  将 %I  扩展到一个完全合格的路径名 
     %~dI        -  仅将  %I  扩展到一个驱动器号 
     %~pI        -  仅将  %I  扩展到一个路径 
     %~nI        -  仅将  %I  扩展到一个文件名 
     %~xI        -  仅将 %I  扩展到一个文件扩展名 
     %~sI        -  扩展的路径只含有短名 
     %~aI        -  将 %I  扩展到文件的文件属性 
     %~tI        -  将 %I  扩展到文件的日期/时间 
     %~zI        -  将 %I  扩展到文件的大小 
     %~$PATH:I   -  查找列在路径环境变量的目录,并将 %I  扩展 
                    到找到的第一个完全合格的名称。如果环境变量名 
                    未被定义,或者没有找到文件,此组合键会扩展到 
                    空字符串
    注意:
        I 就是 for 声明的变量

一, %~I

    作用:
        删除任何引号("),扩展 %I 
    举例:
        d:\cmd\03>echo "hello world!">temp.txt
        d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
        hello world!
        d:\cmd\03>echo "I love You!!>>temp.txt
        "I love You!!>>temp.txt
        d:\cmd\03>echo ^"I love You!!>>temp.txt
        d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
        hello world!
        I love You!!
        d:\cmd\03>echo ^"Thank" you!!!">>temp.txt
        d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
        hello world!
        I love You!!
        Thank" you!!!
        d:\cmd\03>echo ^"Thank" you!!!"!>>temp.txt
        d:\cmd\03>for /f "delims=" %i in (temp.txt) do @echo %~i
        hello world!
        I love You!!
        Thank" you!!!
        Thank" you!!!"!    
    注意:
        不成对的引号要加转义字符^ ,重定向符号前不要留空格 

二, %~fI

    作用:
        将 %I  扩展到一个完全合格的路径名,
        即, (打印) 该文件/目录 的绝对路径.
    举例:
        d:\cmd>dir /b
        01
        02
        03
        d:\cmd>for /f "delims==" %i in ('dir /b') do @echo %~fi
        d:\cmd\01
        d:\cmd\02
        d:\cmd\03


三, %~dI

    作用:
        仅将 %I  扩展到一个驱动器号
        即, (打印) 该文件/目录 所在的盘符.
    举例:
        d:\cmd>dir /b
        01
        02
        03        
        d:\cmd>for /f "delims=" %i in ('dir /b') do @echo %~di
        d:
        d:
        d:


四, %~pI

    作用:   
        仅将 %I  扩展到一个路径
        扩展后:绝对路径 - 文件名(带扩展名) - 盘符(带冒号)
        即, d:\cmd\02\1.txt => \cmd\02\
    举例:
        d:\cmd\02>dir /b
        1.bat
        1.txt    
        d:\cmd\02>for /f "delims=" %i in ('dir /b') do @echo %~pi
        \cmd\02\
        \cmd\02\


五, %~nI

    作用:
        仅将 %I  扩展到一个文件名 
        即, (打印) 文件/目录 名字, 不带扩展名
    举例:
        d:\cmd\03>dir /b
        dir
        temp.txt
        d:\cmd\03>for /f "delims=" %i in ('dir /b') do @echo %~ni
        dir
        temp   


六, %~xI

    作用:
        仅将 %I  扩展到一个文件扩展名 
        即, (打印) 文件 的扩展名
    举例:
        d:\cmd\03>dir /b
        dir
        temp.txt
        d:\cmd\03>for /f %i in ('dir /b') do @echo %~xi
        ECHO 处于打开状态。
        .txt


七, %~sI

    作用:
        扩展的路径只含有短名
        即, 还是打印绝对路径
    举例:
        d:\cmd\03>dir /b
        dir
        temp.txt
        d:\cmd\03>for /f %i in ('dir /b') do @echo %~si
        d:\cmd\03\dir
        d:\cmd\03\temp.txt


八, %~aI

    作用:
        将 %I  扩展到文件的文件属性 
    举例:
        d:\cmd\03>dir /b
        dir
        temp.txt
        d:\cmd\03>for /f %i in ('dir /b') do @echo %~ai
        d--------
        --a------


九, %~tI    

    作用:
        将 %I  扩展到文件的日期/时间
    举例:
        D:\cmd\03>dir /b
        dir
        temp.txt
        // 打印文件建立的日期
        D:\cmd\03>for /f %i in ('dir /b') do @echo %~ti
        2013/07/12 16:54
        2013/07/12 16:29


十, %~zI

    作用:
        将 %I  扩展到文件的大小
    举例:
        D:\cmd\03>dir /b
        dir
        temp.txt
        // 打印文件大小
        D:\cmd\03>for /f %i in ('dir /b') do @echo %~zi
        0
        66
        

十一, %~$PATH:I

    作用:
        查找列在路径环境变量的目录,并将 %I  扩展 
        即, 在 Path环境变量中, 查找指定字符串, 有则返回"="右边的值.
    举例:
        存在=>
        D:\cmd\03>for /f "delims=" %i in ("notepad.exe") do @echo %~$path:i
        C:\Windows\System32\notepad.exe
        不存在=>
        D:\cmd\03>for /f "delims=" %i in ("notepad123.exe") do @echo %~$path:i
        ECHO 处于打开状态。
      说明:
        在 PATH变量里指定的路径里搜索 notepad.exe文件,
        如果有 notepad.exe则会把他所在绝对路径打印出来,
        没有就打印一个错误
原创粉丝点击