我的批处理经验相当有限,但我确实编写了以下脚本来删除目标文件夹的所有空子文件夹。
set "Target=C:\Target"
for /f "delims=" %%i in ('dir "%Target%" /A:D /B /S ^| sort /r') do rd "%%i" 2>NUL >NUL
我的问题是:
1.我希望能够保持第一层子文件夹完整,只删除以下图层中的空文件夹。
2.如果可能,我还想完全根据他们的名字跳过某些文件夹。
是否可以这样做或者我是否需要为我要清理的所有子文件夹编写脚本?
答案 0 :(得分:1)
以下代码在 C:\ Target
文件夹中的以下文件夹结构上进行了测试运行下面的批处理文件后生成的文件夹结构是
只删除了单个文件夹要删除的文件夹,因为这个文件夹不应该始终保留,而且确实是空的。
@echo off
rem For each subfolder in C:\Target do ...
for /D %%D in ("C:\Target\*") do (
rem For each subfolder in found subfolder of C:\Target do ...
for /D %%S in ("%%~D\*") do call :DeleteFolder "%%~S"
)
rem This goto :EOF results in exiting the batch file.
goto :EOF
rem Subroutine for easier comparing the name of the current
rem subfolder with the name of the subfolders to always keep.
rem The goto :EOF commands below just exit the subroutine.
:DeleteFolder
if "%~nx1"=="Folder To Keep A" goto :EOF
if "%~nx1"=="FolderToKeepB" goto :EOF
rem Delete this subfolder which fails if it is not empty.
rem The error message is suppressed by redirecting output stream
rem stderr (standard error) with handle 2 to the NUL device.
rd "%~1" 2>nul
goto :EOF
有关使用过的命令的更多详细信息,请在运行
时将帮助输出打印到控制台窗口中call /?
或help call
for /?
或help for
goto /?
或help goto
rd /?
或help rd
或rmdir /?
或help rmdir