• 批处理中的%~语法


    Windows批处理系列:set和变量📌函数传参📌if语句📌for循环

    初步认识

    在批处理中,通过%1,%2……来传递参数,这个我们早就知道了;%~1的含义我们也知道,无非是自动删除参数中的引号而已。然而,%~这个语句,能够做到的却不止是删除引号而已。

    下面新建一个批处理文件,来看看

    :: para.bat
    @echo I mode: %~1
    @echo fI mode: %~f1
    @echo dI mode: %~d1
    @echo tI mode: %~t1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运行效果如下

    >para "para.bat"
    I mode: para.bat
    fI mode: C:\Users\Laser\Documents\00\0821\para.bat
    dI mode: C:
    tI mode: 2023/08/21 10:17
    
    • 1
    • 2
    • 3
    • 4
    • 5

    其中,%1自动去掉了双引号,这没什么好说的,%1看样子是补齐了para.bat的绝对路径;dI给出了para.bat所在盘符;最后tI则返回了para.bat的创建时间。

    规则

    这些类似fdt之类的前缀,可以对输入字串进行转换,其转换规则如下

    标记规则
    %~I删除任何引号("),扩展 %I
    %~fI将 %I 扩展到一个完全合格的路径名
    %~dI仅将 %I 扩展到一个驱动器号
    %~pI仅将 %I 扩展到一个路径
    %~nI仅将 %I 扩展到一个文件名
    %~xI仅将 %I 扩展到一个文件扩展名
    %~sI扩展的路径只含有短名
    %~aI返回文件I的文件属性
    %~tI返回文件I的文件的日期/时间
    %~zI返回文件I的文件大小
    %~$PATH:I匹配环境变量PATH路径下的文件

    其中 a,t,z这三种模式要求文件I存在,否则就会返回空串;%~$PATH:I如果没匹配成功,也会返回一个空串。

    组合模式

    这些模式可以组合在一起

    ::multi.bat
    @echo fdp mode: %~fdp1
    @echo fatz mode: %~fatz1
    @echo fdpnxsatz mode: %~fdpnxsatz1
    
    • 1
    • 2
    • 3
    • 4

    效果如下

    >multi multi.bat
    fdp mode: C:\Users\Laser\Documents\00\0821\multi.bat
    fatz mode: --a-------- 2023/08/21 10:26 86 C:\Users\Laser\Documents\00\0821\multi.bat
    fdpnxsatz mode: --a-------- 2023/08/21 10:26 86 C:\Users\Laser\DOCUME~1\00\0821\multi.bat
    
    • 1
    • 2
    • 3
    • 4

    可见fdp这三个标记同时使用的话,其结果会被合并到一起。

    for循环

    %语法在For循环中也十分便利,下面的代码表示,搜索C盘中以s结尾的文件夹,并返回其修改时间、文件夹大小以及文件夹名称

    >for /D %i in (c:\*s) do @echo %~tzfi
    
    • 1

    返回结果如下


    2023/05/03 21:58 0 c:\PerfLogs
    2023/08/11 09:48 8192 c:\Program Files
    2023/05/03 22:07 4096 c:\Users
    2023/08/15 22:39 24576 c:\Windows

  • 相关阅读:
    LLM大模型量化原理
    java-net-php-python-jspm生活百汇线上超市系统计算机毕业设计程序
    GEE|时间序列分析(一)
    高通camera-sensor分辨率简单梳理
    数据库注入提权总结(四)
    leetcode 684. 冗余连接
    京东数据平台:2023年服饰行业销售数据分析
    Idea 常用快捷键列表
    【ACWing】2524. 树链剖分II
    windows工具:推荐一款可以截长图(滚动截图)的工具FSCapture
  • 原文地址:https://blog.csdn.net/m0_37816922/article/details/132403359