我有一个临时文件夹,文件被加载到其中,然后系统地清除。 清除文件的工作失败,现在我有许多目录/文件需要手动删除。 我删除了irs.txt其中包含我需要删除的所有文件夹的名称。 我已经生成了以下内容来删除文件和文件夹,但是路径并不总是相同的:
FOR /F %%i IN (C:dirlist.txt) DO echo y| del "C:Temp Files*" & rmdir /s /q "C:Temp Files" %%i
问题是当临时文件加载到它们形成自己的子文件夹时,所以我有以下结构:
C:Temp Files101folder1
C:Temp Files101folder2
C:Temp Files103folder4
C:Temp Files455folder3
已删除IR.txt包含文件夹名称(文件夹1,文件夹2等)
我的脚本失败,因为它搜索"C:\Temp Files\folder1">
如何让脚本找到"folder1"并将其删除,而不管子文件夹编号(101、103 等)如何?
@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 )受到保护。