echo off
for /d /r "c:\" %%a in (TemporaryFolder) do if exist "%%a" echo Removing %%a & rmdir /s /q "%%a"
此for loop
从C:\驱动器中删除每个名为“ TemporaryFolder”的目录。如何浏览每个已安装的卷(即A:\-Z :)以删除目录“ TemporaryFolder”?
编辑(此测试无效):
@echo off
echo Deleting Temporary Folders... Please be patient.
For /F "Tokens=*" %%A In ('MountVol^|Find ":\"') Do For /F "Delims=" %%B In ('Dir /B/S/AD-S-L "%%ATemporaryFolder" 2^>Nul') Do RD /S/Q "%%B" 2>Nul & echo Deleting %%B
echo Successfully deleted.
pause
答案 0 :(得分:0)
根据我的评论,下面是一个嵌套For
循环的示例,该循环应按要求进行:
For /F "Tokens=*" %%A In ('MountVol^|Find ":\"') Do For /F "Delims=" %%B In ('Dir /B/S/AD-S-L "%%ATemporaryFolder" 2^>Nul') Do RD /S/Q "%%B" 2>Nul
外部For
循环运行MountVol
命令,该命令将挂载的驱动器路径返回为%%A
。嵌套的For
循环对位于TemporaryFolder
中的名为%%A
的目录执行递归目录搜索。
修改
以下是同一例程的多行版本,其中添加了消息:
@Echo Off
Set "objFolder=TemporaryFolder"
Echo Please be patient...
For /F "Tokens=*" %%A In ('MountVol^|Find ":\"') Do (
Echo Deleting directories named %objFolder% from %%A
For /F "Delims=" %%B In ('Dir /B/S/AD-S-L "%%A%objFolder%" 2^>Nul') Do (
Echo Deleting %%B
RD /S/Q "%%B" 2>Nul && Echo Successfully deleted %%B
)
)
Pause
您应该仅修改objFolder
行上的2
名称。
此驱动器使用MountVol
代替PowerShell
来获取驱动器,并且也匹配系统和重新解析点,(请注意您需要适当的权限才能删除系统目录) :
@Echo Off
Set "objFolder=TemporaryFolder"
Echo Please be patient...
For /F "Tokens=*" %%A In (
'PowerShell -NoP "GDr -P FileSystem|?{!$_.Used -Eq ''}|Select -Exp Root"'
) Do (Echo Deleting directories named %objFolder% from %%A
For /F "Delims=" %%B In ('Dir /B/S/AD "%%A%objFolder%" 2^>Nul') Do (
Echo Deleting %%B
RD /S/Q "%%B" 2>Nul && Echo Successfully deleted %%B
)
)
Pause