You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用批处理删除文件名特定位置含指定字符串的文件?

解决批处理误删文件的问题:精准匹配扩展名前的指定字符串

你的问题出在通配符的匹配范围太广了——原来的*%_FileNumber%.*会匹配文件名任意位置包含输入字符串的文件,不管这个字符串是在日期部分还是扩展名前的目标位置,所以才会误删。

要实现仅匹配扩展名前位置的指定字符串,我们需要收紧通配符的规则,确保输入的字符串是夹在两个点之间(也就是位于文件名的倒数第二个字段,紧挨着扩展名)。

修改后的代码

@ECHO off
TITLE REMOVE FILES
@ECHO:
SET /p _FileNumber= Enter file number You want to remove:
:: 仅匹配包含 .[输入字符串]. 的文件(即扩展名前的位置)
del /q /s "C:\Directory1\*.%_FileNumber%.*"
del /q /s "C:\Directory2\*.%_FileNumber%.*"
PAUSE

代码说明

  • *.%_FileNumber%.* 这个通配符的逻辑是:
    • *:匹配文件名开头的任意字符
    • .%_FileNumber%.:精确匹配一个点 + 用户输入的字符串 + 一个点,确保输入的字符串是独立的字段,且位于扩展名的直接前面
    • *:匹配任意扩展名

这样修改后,当你输入2019时:

  • 会被删除的文件:FILE 2019.03.09.FILE.2019.XXX(因为包含.2019.)
  • 不会被误删的文件:FILE2019.03.09.FILE.XXX(2019前面没有点,不满足通配符规则)

额外优化(可选)

如果你的文件名格式是固定的FILE YYYY.MM.DD.FILE.YYYY.XXX,还可以用更精准的通配符进一步缩小范围,把误删概率降到最低:

del /q /s "C:\Directory1\FILE *.FILE.%_FileNumber%.*"

这个规则会匹配开头是FILE 、中间包含.FILE.、接着是输入字符串、最后是扩展名的文件,完全贴合你给出的文件名格式。

内容的提问来源于stack exchange,提问作者mgk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:11:00