首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理文件以删除多个文件夹中的特定文件

批处理文件以删除多个文件夹中的特定文件
EN

Stack Overflow用户
提问于 2022-02-07 19:40:21
回答 1查看 892关注 0票数 0

我需要从同一服务器上的28个文件夹中删除特定的文件。e.g

C:/文件夹/DMP/app_x0

C:/文件夹/DMP/app_x1

C:/文件夹/DMP/app_x2

DeleteList.txt有一个文件名列表(带有路径)。

C:/文件夹/DMP/app_X0/ABC1.txt

C:/文件夹/DMP/app_x0/app 1.doc

批处理文件需要一个循环逐个遍历每个文件夹,并删除文本文件中提到的所有文件。只有当我在DeleteList.txt文件中指定每个文件的名称之前指定完整路径时,才能对一个文件夹进行工作。

代码语言:javascript
复制
for /f "delims=" %%f in (DeleteList.txt) do del "%%f"

如何使用上面的代码,以便相同的代码可以在批处理文件中运行28次,但每次替换文件夹位置路径。DeleteList.txt不会改变。

任何示例代码/建议都会有所帮助。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-08 01:36:42

其中一个问题,我们需要在字里行间阅读。

鉴于我们有带有不正确路径分隔符的完整文件名的文件,并且要求从28个目录中删除文件(但没有列表),那么我得出的结论是,由于所需的子目录显示的都是C:\folder\DMP\的子目录,所以实际上需要删除列表中完整文件名的父目录的所有子目录中与文件中的文件名匹配的所有文件。

所以我的建议是

代码语言:javascript
复制
 for /f "delims=" %%b in (DeleteList.txt) do del /s "%%~dpb..\%%~nxb"

当然,在实现虚拟树之前,您应该在虚拟树上测试它。

del /s删除目标目录和所有子目录。目标子目录是%%b的驱动器和路径;它的父目录(..);%%b的名称和扩展部分。

我更喜欢使用不可作为元可修饰符使用的元数据。

若要在子目录中删除,但不能在父目录中删除:

代码语言:javascript
复制
for /f "delims=" %%b in (DeleteList.txt) do FOR /d %%c IN ("%%~dpb..\*") DO del /s "%%c\%%~nxb">nul

这一次,%%c依次设置为所有子目录名,并将del/s应用于每个子目录。/s (...and子目录)可能不是必需的。如果需要,>nul将取消删除报告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71024426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档