【问题标题】:Batch deleting folders from file.txt从 file.txt 批量删除文件夹
【发布时间】:2018-02-20 16:57:04
【问题描述】:

我有一个临时文件夹,文件被加载到其中,然后系统地清除。清除文件的工作失败,现在我有许多需要手动删除的目录/文件。我已经删除了包含我需要删除的所有文件夹的名称的 deleteirs.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”

无论子文件夹编号(101、103 等)如何,如何让脚本找到“folder1”并将其删除?

【问题讨论】:

    标签: batch-file subdirectory


    【解决方案1】:
    @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 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO RD 更改为RD 以实际删除目录。

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

    请注意,您的del "C:\Temp Files\*" 只会一遍又一遍地删除"C:\Temp Files" 中的所有文件。它真的只需要完成一次(如果这是你打算做的)。

    删除目录会释放其中包含的所有文件,前提是没有以某种方式受到保护(只读或受 UAC 保护)。

    【讨论】:

    • 完全按预期工作!谢谢 Magoo。
    猜你喜欢
    • 2013-02-17
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    相关资源
    最近更新 更多