我需要从同一服务器上的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文件中指定每个文件的名称之前指定完整路径时,才能对一个文件夹进行工作。
for /f "delims=" %%f in (DeleteList.txt) do del "%%f"如何使用上面的代码,以便相同的代码可以在批处理文件中运行28次,但每次替换文件夹位置路径。DeleteList.txt不会改变。
任何示例代码/建议都会有所帮助。谢谢。
发布于 2022-02-08 01:36:42
其中一个问题,我们需要在字里行间阅读。
鉴于我们有带有不正确路径分隔符的完整文件名的文件,并且要求从28个目录中删除文件(但没有列表),那么我得出的结论是,由于所需的子目录显示的都是C:\folder\DMP\的子目录,所以实际上需要删除列表中完整文件名的父目录的所有子目录中与文件中的文件名匹配的所有文件。
所以我的建议是
for /f "delims=" %%b in (DeleteList.txt) do del /s "%%~dpb..\%%~nxb"当然,在实现虚拟树之前,您应该在虚拟树上测试它。
del /s删除目标目录和所有子目录。目标子目录是%%b的驱动器和路径;它的父目录(..);%%b的名称和扩展部分。
我更喜欢使用不可作为元可修饰符使用的元数据。
若要在子目录中删除,但不能在父目录中删除:
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将取消删除报告。
https://stackoverflow.com/questions/71024426
复制相似问题