Batch file 如何删除特定位置包含字符串的文件?

Batch file 如何删除特定位置包含字符串的文件?,batch-file,Batch File,如何使用批处理文件删除文件名中特定位置具有特定字符串的文件 我想删除包含最终用户输入的特定字符串的文件 例如,我想从文件名如下的几个目录中删除包含2019的所有文件: FILE 2019.03.09.FILE.2019.XXX 我有以下代码: @ECHO off TITLE REMOVE FILES @ECHO: SET /p _FileNumber= Enter file number You want to remove: del /q /s "C:\Directory1\*%_File

如何使用批处理文件删除文件名中特定位置具有特定字符串的文件

我想删除包含最终用户输入的特定字符串的文件

例如,我想从文件名如下的几个目录中删除包含
2019
的所有文件:

FILE 2019.03.09.FILE.2019.XXX
我有以下代码:

@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
我输入了具体的数字,它就工作了,但也删除了所有有年份名称的文件


我可以添加一些从扩展字段前面的数字中提取变量的内容吗?

谢谢您的回答和评论。我用另一种方式解决了这个问题。我只是在百分号前加了一个点,然后去掉了末尾的那个。因为在日期之前没有一个,所以它解决了问题。使用大约50种不同的文件名组合进行了良好的测试

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

如果您提供的所有文件的格式为
文件yyyy.mm.dd.FILE.yyyy.ext
,则将
findstr
与正则表达式一起使用:

@echo关闭
标题删除文件
回声:
设置/p“\u FileNumber=输入要删除的文件号:”
对于/F“delims=eol=“%%A IN('dir/S/B/A-D“*”^ findstr/RC:“FILE%\u FileNumber%\.[0-9][0-9]\.[0-9][0-9]\.FILE\.%\u FileNumber%\.ext“”)执行del/F/A“%~fA”
暂停
这将确保删除所有包含用户输入的文件,这些文件采用您提到的格式

正则表达式说明:

  • /R
    findstr
  • \
    是转义字符
  • 是一个通配符;它意味着任何字符,因此它用
    \
    转义,因为您需要一个真正的点
  • [0-9]
    表示仅当
    []
    中的一个字符存在时匹配,如果
    1
    2
    3
    4
    5
    6
    7
    8
    9
    中的任何字符存在
有关所用命令的详细信息,请键入
cmd.exe

  • 获取/?
  • 设置/?
  • title/?
  • echo/?
  • findstr/?
    解释接受的正则表达式
  • 暂停/?
  • dir/?
  • del/?

您提供的代码不能代表您在问题中提出的任务。在StackOverflow上,我们帮助您修复所提供代码中的一个特定问题,但您当前拥有的代码在编写时仍然有效。因此,你的问题在这里是离题的。为了将您的问题带到主题上,您需要尝试匹配代码中的位置,以使用该位置的字符串标识文件名。在您的示例中,只需使用例如
“C:\Directory2\*.%\U FileNumber%.*”
就可以了!仅供参考,您可以使用regex
文件[0-9][0-9][0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\.文件\.[0-9][0-9][0-9]\.XXX来访问您的文件。应该做的是:
for/F“delims=“%%A IN('dir/s/b/A-d*^ findstr/rc:'FILE[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][0-9][0-9]\.XXX')do del 0%~fA code>。考虑到应该在存在的地方添加
2019
,使用
for/F“delims=“%%A in('dir/s/b/A-d*^ findstr/rc:“FILE%\u FileNumber%\.[0-9][0-9]\.[0-9][0-9]\.FILE\.%\u FileNumber%\.XXX')do del%~fA
,它肯定会起作用。你的意思是像我七小时前在评论中提供的那样吗?@mgk如果是的话,然后我认为你应该考虑接受(和可选的)我的答案,因为它有一个更好的方式你所提到的。