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/?
“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如果是的话,然后我认为你应该考虑接受(和可选的)我的答案,因为它有一个更好的方式你所提到的。