我需要使用Windows命令提示符从我的应用程序文件夹中删除所有空文件夹?
我该如何创建类似的.bat文件?
请帮帮我。
我需要使用Windows命令提示符从我的应用程序文件夹中删除所有空文件夹?
我该如何创建类似的.bat文件?
请帮帮我。
ROBOCOPY
命令。它非常简单,还可以用于删除大层次结构中的空文件夹。ROBOCOPY folder1 folder1 /S /MOVE
在这里,源文件夹和目标文件夹都是 folder1
,因为您只需要删除空文件夹,而不是将其他(必需的)文件移动到不同的文件夹中。使用 /S
选项可以跳过复制(在上述情况下移动)空文件夹。此方法速度更快,因为文件移动在同一驱动器内进行。
一个更简单的方法是使用/s开关运行xcopy以复制整个目录结构。/s的说明是“复制除空目录外的目录和子目录”。
xcopy dirA dirB /S
其中dirA是具有空文件夹的源文件夹。DirB将是不包含空文件夹的副本。
xcopy dirA dirB /SI
将跳过提示,“dirB是目标上的文件名还是目录名?” - user87453for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
来自: http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx
当然,在执行该命令之前,我会先进行测试而不是直接删除。此外,以下是评论中包含带空格文件夹的修改版本:
for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
附言:博客文章中有更多的评论可能会对你有所帮助,因此在尝试此操作之前,请确保先阅读这些评论。
for /f "tokens=*" %%d in ('dir /ad/b/s ^| sort /R') do rd "%%d"
- Brad W%d
替换 %%d
。 - svandragt你不需要使用 usebackq:
FOR /F delims^= %%A IN ('DIR/AD/B/S^|SORT/R') DO RD "%%A"
除了同一引用页面的腐蚀答案外,还有一个PowerShell版本 http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx#8408736
Get-ChildItem -Recurse . | where { $_.PSISContainer -and @( $_ | Get-ChildItem ).Count -eq 0 } | Remove-Item
更简洁的写法:
gci -R . | where { $_.PSISContainer -and @( $_ | gci ).Count -eq 0 } | ri
功劳归于发布者。
从命令行执行: for /R /D %1 in (*) do rd "%1"
在批处理文件中执行: for /R /D %%1 in (*) do rd "%%1"
我不知道它是否被正式文档记录,但它可以在W2K、XP和Win 7上使用。我也不知道它是否永远都有效,但它不会意外删除文件。
它应该能够很好地工作。这是递归删除旧文件和空目录的最佳方法。 以下是 .bat 文件:
forfiles /p [PATH] /s /m [FILE-PATTERN] /d -[DAYS] /c "cmd /c del @path"
for /f "delims=" %%d in ('dir [PATH] /s /b /ad ^| sort /r') do rd "%%d"
[DAYS] = Max. age of the files in days, e.g. “10”
[PATH] = Path to search for old files and empty folders, e.g. “C:\Backup\”
[FILE-PATTERN] = Pattern that matches files to delete, e.g. “*.bkp”
这是以上方法的混合体。它会删除给定路径下所有早于X天的文件,并删除任何空文件夹。只需设置天数、文件夹路径和驱动器即可使用。
@echo off
SETLOCAL
set days=30
set folderpath=E:\TEST\
set drive=E:
::Delete files
forfiles -p %folderpath% -s -d -%days% -c "cmd /c del /q @path "
::Delete folders
cd %folderpath%
%drive%
for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"`
"dir /ad/b/s | sort /R"
) do rd "%%d" - integratorIT安装任何适用于Windows的UNIX解释器(例如Cygwin或Git Bash),然后运行以下命令:
该命令将在指定目录下查找所有空文件夹。find /path/to/directory -empty -type d
To find them
find /path/to/directory -empty -type d -delete
To delete them
(实际上并没有使用Windows命令提示符,但这很容易且只需几秒钟即可运行)
如果您想在资源管理器上下文菜单(即右键单击)中使用Varun的ROBOCOPY命令行,这里提供了一个Windows注册表导入文件。我尝试将其添加为评论到他的答案中,但内联标记不可行。
我已在自己的Windows 10 PC上测试过此方法,但请自行承担风险。它将打开一个新的命令提示符窗口,运行命令,并暂停以便您查看输出。
复制以下内容到一个新的文本文件中:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\Delete Empty Folders\command] @="C:\Windows\System32\Cmd.exe /C \"C:\Windows\System32\Robocopy.exe \"%V\" \"%V\" /s /move\" && PAUSE"
[HKEY_CURRENT_USER\Software\Classes\directory\shell\Delete Empty Folders\command] @="C:\Windows\System32\Cmd.exe /C \"C:\Windows\System32\Robocopy.exe \"%V\" \"%V\" /s /move\" && PAUSE"
将.txt扩展名改为.reg