【问题标题】:Bat to delete specific folders in subfolders listed in a text file蝙蝠删除文本文件中列出的子文件夹中的特定文件夹
【发布时间】:2013-07-12 10:55:16
【问题描述】:

Bat 删除特定的子文件夹列表

在 windows xp 中,我有一个文件夹名称 gaming,其中包含 100 个名称为 games1games2games3 ... games100 的文件夹。

在每个文件夹中都有一个巨大的子文件夹列表,从 1 到 100000

我有一个 名单,其中包含我要删除的 50000 个文件夹
我想在不知道其父目录名称的情况下删除的名称列表示例

6383 6385 4850 6395 6396 6397 9865 6401 6408 1200 ... .. .

【问题讨论】:

    标签: windows batch-file cmd directory


    【解决方案1】:

    试试这个:

    @echo OFF &SETLOCAL
    SET "namelist=list.txt"
    
    for /f "usebackq delims=" %%a in ("%namelist%") do set "$%%a=1"
    for /d /r "gaming" %%a in (*) DO IF DEFINED $%%~na ECHO rd /s /q "%%~a"
    

    查看输出,如果看起来不错,请删除 rd 之前的单词 echo

    【讨论】:

    • +1 我就是这样做的! ;-) 这是比较每个文件名与一长串名称的最快方法...
    • 回答问题,我将代码复制到一个 bat 文件中并运行它,但它不起作用,我想提一下,我需要删除 50000 个文件夹而不是文件
    • @Endoro 那不是只取 list.txt 中的姓氏并处理吗?
    • 对于我没有时间测试的答案,但我找到了其他解决方案,我找到了一种方法来获取每个子文件夹的名称父母 ty 为您提供帮助
    • @foxidrive 我构建了一个关联数组$foldername=1。所以比较非常容易。不适用于包含 = 的文件夹名称。
    【解决方案2】:

    这需要d:\folder\gaming 文件夹中的list.txt,它将在同一文件夹中创建"removefolders.bat.txt"

    在记事本中打开该文件并验证是否列出了正确的文件夹,然后您可以将其重命名为 .bat 并运行它以实际删除文件夹。

    @echo OFF
    pushd "d:\folder\gaming"
    del "removefolders.bat.txt" 2>nul
    for /f "delims=" %%a in ('type "list.txt" ') do (
    for /d /r %%b in (*) do if "%%~nxb"=="%%a" >>"removefolders.bat.txt" echo rd /q /s "%%b"
    )
    popd
    

    【讨论】:

    • 你的答案,我找到了解决我的问题的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多