• FOR的增强用法


    FOR命令中的一些变量

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

    注:%如果在cmd命令行中使用变量一个 %变量名 如果在.bat或.cmd中需要两个 %%变量名

    我们可以看到每行都有一个大写字母"I",这个I其实就是我们在FOR带入的变量,我们FOR语句代入的变量名是什么,这里就写什么.
    比如:FOR /F %%z IN ('set') DO @echo %%z
    这里我们代入的变量名是z那么我们就要把那个I改成z,例如%~fI改为%~fz
    至于前面的%~p这样的内容就是语法了!

    ~I          - 删除任何引号("),扩展 %I

    test.txt文件

    "1111
    2222"
    "3333"
    44"44

    bat文件

    @echo off
    FOR /F "delims=" %%i IN (test.txt) DO @echo  %%~i
    pause

    可以看出,删除引号规则:

    1、若字符串首尾同时存在引号,则删除首尾的引号;
    2、若字符串尾不存在引号,则删除字符串首的引号;
    3、如果字符串中间存在引号,或者只在尾部存在引号,则不删除。

    %~fI        - 将 %I 扩展到一个完全合格的路径名

    如:

    @echo off
    FOR /F "delims=" %%i IN ('dir /b') DO @echo  %%~fi
    pause

    对比下,如果是:

    @echo off
    FOR /F "delims=" %%i IN ('dir /b') DO @echo  %%i
    pause

    通过对比,我们很容易就看出没有路径了,这就是"将 %I 扩展到一个完全合格的路径名"的作用也就是如果%i变量的内容是一个文件名的话,他就会把这个文件所在的绝对路径打印出来,而不只单单打印一个文件名

    %~dI        - 仅将 %I 扩展到一个驱动器号

    只显示文件所在的盘符

    @echo off
    FOR /F "delims=" %%i IN ('dir /b') DO @echo  %%~di
    pause

    %~pI        - 仅将 %I 扩展到一个路径

    这个用法和上面一样,他只打印路径不打印文件名字,也不打印盘符

    @echo off
    FOR /F "delims=" %%i IN ('dir /b') DO @echo  %%~pi
    pause

    %~nI        - 仅将 %I 扩展到一个文件名

    只打印文件名字,不打印路径和扩展名

    @echo off
    FOR /F "delims=" %%i IN ('dir /b') DO @echo  %%~ni
    pause

    %~xI        - 仅将 %I 扩展到一个文件扩展名

    只打印文件的扩展名

    @echo off
    FOR /F "delims=" %%i IN ('dir /b') DO @echo  %%~xi
    pause

    %~sI        - 扩展的路径只含有短名

    打印绝对短文件名

    @echo off
    FOR /F "delims=" %%i IN ('dir /b') DO @echo  %%~si
    pause

    %~aI        - 将 %I 扩展到文件的文件属性

    打印文件的属性

    @echo off
    FOR /F "delims=" %%i IN ('dir /b') DO @echo  %%~ai
    pause

    %~tI        - 将 %I 扩展到文件的日期/时间

    打印文件建立的日期

    %~zI        - 将 %I 扩展到文件的大小

    打印文件的大小,用字节表示,0为文件夹

    @echo off
    FOR /F "delims=" %%i IN ('dir /b') DO @echo  %%~zi
    pause

    %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串

    通白理解其实就是在环境变量PATH中指定的路径里查找指定文件,有点象索引搜索.

    @echo off
    FOR /F "delims=" %%i IN ("net.exe") DO @echo  %%~$PATH:i
    pause

    CMD指令echo %path% 可以查看环境变量PATH中有哪些路径

    组合用法

    @echo off
    FOR /F "delims=" %%i IN ('dir /b') DO @echo  %%~dpnxatzi
    pause

    加路径搜索

    @echo off
    FOR /F "delims=" %%i IN ("net.exe") DO @echo  %%~dpnxatz$PATH:i
    pause

  • 相关阅读:
    es进行聚合操作时提示Fielddata is disabled on text fields by default
    es基本操作
    maven项目修改项目名
    Linux命令整理
    CentOS 安装git
    Linux命令
    纵表转横表
    Row_Number() over()
    事件冒泡/捕获
    js获取参数 解决乱码
  • 原文地址:https://www.cnblogs.com/yifengs/p/16395681.html
Copyright © 2020-2023  润新知