因此,我目前正尝试重复删除程序创建的一堆子文件夹,因为它将重新创建子文件夹。我知道如何安排批处理文件,现在我的问题是如何有效地创建批处理文件。为了明确起见,假设我有一个名为D:\IGSG
的目录。 D:\IGSG
中有250个文件夹,其中每个文件夹中都有一个名为D:\IGSG\F252341\arg
的文件夹。我想从我所有的〜250个F文件夹中删除所有\arg
文件夹,而不删除F文件夹中的其他文件。现在,我知道的唯一方法是拥有一批
cd D:\IGSG\F252341
del /Q arg
并为每个子文件夹重复这些行,但是为其中的每个文件夹键入这些文件夹名称将很繁琐,尤其是考虑到不时创建新文件夹的时候。因此,我正在寻找一种批处理的方式来删除子文件夹的子文件夹,而不删除其他文件(如果有道理的话)。
答案 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竞争的罕见情况之一。