批处理脚本路径通配符适配:文件名规则变更后的拷贝问题
适配新命名规则的批处理脚本调整方案
没问题,我帮你把批处理脚本调整成适配新规则的版本,分两种场景给你参考:
基础版:仅匹配包含Sign_Off的PDF文件
如果只需要替换文件名匹配规则,不需要额外过滤父目录,直接修改通配符即可,新命令如下:
FOR /R "J:" %%G in (*Sign_Off*.pdf) DO COPY "%%G" "C:\Users\user\discimport" /Y
- 这里的
*Sign_Off*.pdf会匹配文件名任意位置包含Sign_Off字符串的所有PDF文件,完全替代原来的*FINAL.pdf后缀匹配逻辑。
进阶版:同时匹配文件+过滤父目录(以日期代码结尾)
如果需要额外确保文件的父目录是以日期代码结尾的(比如常见的8位YYYYMMDD格式),可以加上目录判断逻辑,脚本如下:
@echo off SETLOCAL ENABLEDELAYEDEXPANSION FOR /R "J:" %%G in (*Sign_Off*.pdf) DO ( REM 获取文件的父目录完整路径 SET "parent_path=%%~dpG" REM 移除路径末尾的反斜杠,方便提取目录名 SET "parent_path=!parent_path:~0,-1!" REM 提取父目录的名称 FOR %%H in ("!parent_path!") DO SET "parent_name=%%~nH" REM 判断父目录名是否以8位数字结尾(可根据实际日期格式修改正则) ECHO !parent_name! | FINDSTR /R "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$" >NUL IF NOT ERRORLEVEL 1 ( COPY "%%G" "C:\Users\user\discimport" /Y ) ) ENDLOCAL
关键说明:
SETLOCAL ENABLEDELAYEDEXPANSION:开启延迟环境变量扩展,确保循环内的变量能正确更新取值;- 日期代码匹配:如果你的日期代码是其他格式(比如6位DDMMYY),可以修改
FINDSTR的正则表达式,比如把8个[0-9]换成6个; - 逻辑流程:先找到符合文件名规则的PDF,再检查它的父目录是否符合日期结尾要求,只有同时满足才执行复制。
内容的提问来源于stack exchange,提问作者andrew
相关产品推荐
相关产品推荐

