批量删除file.txt中的文件夹

时间:2018-02-20 16:57:05

标签: batch-file subdirectory

我有一个临时文件夹,其中文件被加载到系统中然后被清除。清除文件的作业失败,现在我有许多需要手动删除的目录/文件。我有deletedirs.txt,其中包含我需要删除的所有文件夹的名称。我已生成以下内容来删除文件和文件夹,但路径并不总是相同:

FOR /F %%i IN (C:\dirlist.txt) DO echo y| del "C:\Temp Files\*" & rmdir /s /q "C:\Temp Files\" %%i

问题是临时文件加载后会形成自己的子文件夹,所以我有以下结构:

C:\Temp Files\101\folder1
C:\Temp Files\101\folder2
C:\Temp Files\103\folder4
C:\Temp Files\455\folder3

deletedirs.txt包含文件夹名称(folder1,folder2等)

我的脚本失败了,因为它搜索" C:\ Temp Files \ folder1"

如何让脚本找到' folder1'并删除它,无论子文件夹编号(101,103等)?

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
FOR /d  %%a IN ("c:\temp\*") DO (
 FOR /f "delims=" %%s IN (q48890405.txt) DO (
  IF EXIST "%%a\%%s\." ECHO RD /S /Q "%%a\%%s"
 )
)

GOTO :EOF

您需要更改目录名以适合您的具体情况。

我使用了一个名为q48890405.txt的文件,其中包含一些虚拟数据供我测试。

所需的RD命令仅用于ECHO以用于测试目的。 在您确认命令正确后,将ECHO RD更改为RD以实际删除目录。

这应该依次将子目录名称分配给%%a,然后对于找到的每个子目录,将文件中的名称读入%%s。然后查看名为%%a\%%s的目录是否存在,如果存在则删除它。

请注意,您的del "C:\Temp Files\*"只会一遍又一遍地删除"C:\Temp Files"中的所有文件。它实际上只需要做一次(如果那是你想要做的)。

删除目录会处理它包含的所有文件,前提是没有任何文件以某种方式受到保护(只读或通过UAC)。