如何使用Windows Batch脚本查找带时间戳后缀的指定文件
Batch文件查找问题解决方案
问题排查
- 切换目录未加
/d参数:Batch中cd命令默认仅支持修改当前盘符的工作目录,若脚本执行时的工作目录不在C盘,执行cd c:\MGD不会实际跳转,dir /b输出的是原工作目录的内容,自然找不到目标文件,这也是你去掉日期变量后仍无搜索结果的核心原因。 - 变量未提前定义:
%YYYYMMDD%不是Windows Batch的内置变量,未手动赋值的情况下执行时会被替换为空值,实际执行的搜索逻辑和预期不符。 - 工具选择不合适:
find命令功能偏简单,模糊匹配、正则匹配场景下findstr命令适配性更强。
解决方法
方法1:无需日期变量,直接通配符匹配
直接用dir的通配符筛选带两段下划线后缀的目标文件,最简单高效:
:: /d参数支持跨盘符切换目录 cd /d c:\MGD :: 匹配MGD_DJE_开头、包含第二段下划线的csv文件,直接输出到结果文件 dir /b MGD_DJE_*_*.csv > Results.txt
方法2:指定日期变量搜索
首先给%YYYYMMDD%变量赋值,再执行搜索:
cd /d c:\MGD :: 手动指定要搜索的日期,也可以按系统格式动态取当前日期 set YYYYMMDD=20210924 :: 用findstr做包含匹配 dir /b | findstr "MGD_DJE_%YYYYMMDD%" > Results.txt
简体中文默认日期格式的系统,动态获取当前日期8位格式的赋值代码如下:
set YYYYMMDD=%date:~0,4%%date:~5,2%%date:~8,2%
方法3:正则匹配所有带时间戳的文件
如果不需要限定具体日期,只要是带日期时间戳后缀的文件都匹配,可以用findstr的正则模式:
cd /d c:\MGD dir /b | findstr /r "MGD_DJE_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9][0-9][0-9]\.csv" > Results.txt
内容的提问来源于stack exchange,提问作者Prasad Amperayani
相关产品推荐
相关产品推荐

