批量删除不包括特定文件夹下的文件(或具有特定模式/通配符的文件名,例如 Test123.csv、Test623.csv、Test854.csv)
Posted
技术标签:
【中文标题】批量删除不包括特定文件夹下的文件(或具有特定模式/通配符的文件名,例如 Test123.csv、Test623.csv、Test854.csv)【英文标题】:Batch Delete excluding files under specific folder (or file names with specific pattern /wildcard e.g. Test123.csv, Test623.csv, Test854.csv) 【发布时间】:2022-01-11 10:34:21 【问题描述】:FORFILES /P "C:\Temp\" /D -3 /S /C "cmd /c if @isdir==FALSE del /F /Q @path"
上面的脚本工作正常,删除 Temp 及其子目录下超过 3 天的所有文件。
我想排除特定文件夹中的所有文件,比如文件夹 XYZ 或完整路径中的所有文件-> C:\Temp\ABC\XYZ
注意:XYZ
文件夹下的所有文件都具有Test*.*.csv
模式
【问题讨论】:
【参考方案1】:forfiles
没有排除选项。您必须使用findstr /V
之类的东西来排除结果,但这本身不会构成forfiles
命令的一部分。我们只需合并一个for
循环和使用findstr /V
的ecxlude,然后删除:
@echo off
for /f "delims=" %%i in ('FORFILES /P "%temp%" /D -3 /S /C "cmd /c if @isdir==FALSE echo @path"^| findstr /VI "C:\Temp\ABC\XYZ"') do del /F /Q "%%~i"
【讨论】:
谢谢格哈德。如果文件名中包含空格,则此语法无法删除文件,例如ABC_20211101 (2).csv。它试图分别定位像“C:\Temp\ABC_20211101”和“(2).csv”这样的文件。 请告诉我你正在运行的确切代码。 哦,我这边也发现了一个错字,命令结尾"%%i~"
应该是"%%~i"
感谢 Gerhard 将最终参数更改为 "%%~i" 有效。以上是关于批量删除不包括特定文件夹下的文件(或具有特定模式/通配符的文件名,例如 Test123.csv、Test623.csv、Test854.csv)的主要内容,如果未能解决你的问题,请参考以下文章
python如何批量对文件夹里所有excel特定行进行删除?