批量删除所有子文件夹的子文件夹

时间:2018-06-30 04:59:07

标签: batch-file cmd

因此,我目前正尝试重复删除程序创建的一堆子文件夹,因为它将重新创建子文件夹。我知道如何安排批处理文件,现在我的问题是如何有效地创建批处理文件。为了明确起见,假设我有一个名为D:\IGSG的目录。 D:\IGSG中有250个文件夹,其中每个文件夹中都有一个名为D:\IGSG\F252341\arg的文件夹。我想从我所有的〜250个F文件夹中删除所有\arg文件夹,而不删除F文件夹中的其他文件。现在,我知道的唯一方法是拥有一批

cd D:\IGSG\F252341 del /Q arg

并为每个子文件夹重复这些行,但是为其中的每个文件夹键入这些文件夹名称将很繁琐,尤其是考虑到不时创建新文件夹的时候。因此,我正在寻找一种批处理的方式来删除子文件夹的子文件夹,而不删除其他文件(如果有道理的话)。

2 个答案:

答案 0 :(得分:1)

此PowerShell脚本将遍历子目录结构,并删除arg目录内的所有文件和子目录。确保将IGSG目录的位置更改为您的位置。当您确定要删除正确的文件后,请从-WhatIf cmdlet中删除Remove-Item

Get-ChildItem -Directory -Recurse -Path 'C:\src\t\delsubs\IGSG\F*' -Filter 'arg' |
    Remove-Item -Path {(Join-Path -Path $_.FullName -ChildPath '*')} -Recurse -Force -WhatIf

如果需要从cmd.exe shell运行它,请将上面的代码放入名为“ dodel.ps1”的文件中,然后使用:

powershell -NoProfile -File .\dodel.ps1

答案 1 :(得分:1)

在cmd行for /d /r X:\path上加上通配符将枚举所有文件夹名称arg,后面的.?满足此要求:

for /d /r D:\IGSG %A in (arg.?) do @echo rd /s /q "%A" 

如果输出看起来正确,请删除回显。

在批处理文件中,将%符号加倍-> %% A

@Echo off
for /d /r D:\IGSG %%A in (arg.?) do echo rd /s /q "%%A"

batch / cmd行可以与PowerShell竞争的罕见情况之一。