Windows 批处理获取某路径下最新创建的文件的名称

@echo off setlocal enabledelayedexpansion rem 设置文件所在目录 set src_dir=F:Downloadtest rem filename用于存放目标文件名 set filename="" cd /d %src_dir% for /f %%a in ('dir /o-d /tc /b test*.html') do (     echo 文件完整信息: %%a     set filename=%%~na%%~xa     echo 文件名: !filename!, 最新创建时间: %%~ta     if not "!filename!" == "" (         goto iconv     ) ) :iconv iconv -f gbk -t utf-8 %filename% > "jenkins_test_report.html" pause

说明:

  • setlocal enabledelayedexpansion:开启本地环境变量延迟扩展。

扩展阅读:

  • 批处理运行命令的机制:批处理读取命令时是按行读取的(对于for命令等,其后用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的变量(%var_name%)赋值。开启本地环境变量延迟后,在读取了一条完整的语句之后,不立即对该行的变量赋值,而是在执行某个单条语句之前再对变量进行赋值,也就是说“延迟”了对变量的赋值。开启本地环境变量延迟后,原有变量的界定符由 “%” 改成 “!”。

  • for循环语法

    for /f %variable IN ('command') DO command [command-parameters]
  • *dir /o-d /tc /b test.html**:按文件创建时间降序显示以test开头的.html文件。

  • dir命令选项

    • /b 使用空格式(没有标题信息或摘要)。
    • /o 用分类顺序列出文件。排列顺序:d 按日期/时间(从先到后),- 反转顺序的前缀。
    • /t 控制显示或用来分类的时间字符域。
      • c 创建时间
      • a 上次访问时间
      • w 上次写入的时间

    例:

    • dir /od:按日期/时间升序显示
    • dir /o-d:按日期/时间降序显示
    • dir /tw:时间列输出为修改时间(默认)
  • if not !filename! == “” ( goto iconv ):如果变量filename不为空,则表示取到了值,goto iconv 跳转到iconv标签,继续执行标签后的语句。

  • 变量说明

    • %%a:文件完整信息
    • %%~da:文件所在驱动器信息
    • %%~pa:文件所在路径信息
    • %%~na:文件名信息
    • %%~xa:文件后缀信息
    • %%~za:文件大小信息
    • %%~ta:文件修改时间信息
    • %%~dpa:文件所在驱动器和所在路径信息
    • %%~nxa:文件名及后缀信息
    • %%~pnxa:文件所在路径及文件名和后缀信息
    • %%~dpna:文件驱动器、路径、文件名信息
    • %%~dpnxa:文件驱动器、路径、文件名、后缀信息
  • rem 注释语句

常见问题:

  • cmd中的编码方式为ANSI,如果中文不是此编码方式则会出现乱码。

解决方法

  • 编辑批处理文件时,以ANSI方式编辑即可(windows自带的记事本保存文件时即可选择编码方式为ANSI)。

Windows 批处理获取某路径下最新创建的文件的名称

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享