How to delete empty folders using windows command prompt?
我需要使用Windows命令提示符从应用程序文件夹中删除所有空文件夹吗?
如何创建这样的bat文件?
请帮助我。
您可以使用
1 | ROBOCOPY folder1 folder1 /S /MOVE |
此处源和目标均为
一种更简单的方法是使用/ s开关执行xcopy来复制整个目录结构。 / s的帮助说,复制目录和子目录(空目录除外)。
1 | xcopy dirA dirB /S |
其中dirA是带有空文件夹的源。 DirB将是没有空文件夹的副本
1 | for /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
当然,在执行该命令之前,我会先对其进行测试而不删除它。另外,这是注释的改进版本,其中包括带空格的文件夹:
1 | for /f"usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd"%%d" |
P.S。博客文章中有更多评论可能会对您有所帮助,因此请务必在尝试之前先阅读这些内容
您不需要usebackq:
1 | 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
或更简洁地说,
贷记给投稿作者
从命令行
:
对于(*)中的/ R / D%1,请执行rd "%1 "
在批处理文件中
对于(R)中的/ R / D %% 1,请执行" %% 1 "
我不知道它是否有这样的文档,但是它可以在W2K,XP和Win 7中运行。我不知道它是否始终可以运行,但是永远不会意外删除文件。
这是上面的杂句。它会删除所有X天之前的文件,并删除给定路径的所有空文件夹。要使用,只需设置日期,文件夹路径和驱动器
1 2 3 4 5 6 7 8 9 10 11 12 13 | @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"` |
它将正常工作。这是删除旧文件并递归删除空目录的最佳方法。
以下.bat文件是
1 2 | 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" |
占位符需要按以下方式替换(不带引号):
1 2 3 | [DAYS] = Max. age of the files in days, e.g. a€?10a€? [PATH] = Path to search for old files and empty folders, e.g. a€?C:\\Backup\\a€? [FILE-PATTERN] = Pattern that matches files to delete, e.g. a€?*.bkpa€? |
该脚本已在Windows 7和Windows Server 2003下成功测试。
为Windows安装任何UNIX解释程序(Cygwin或Git Bash)并运行cmd:
find /path/to/directory -empty -type d
1 | To find them |
find /path/to/directory -empty -type d -delete
1 | To delete them |
(不是真的使用Windows cmd提示符,但是很容易,并且花了几秒钟来运行)
n
如果要在资源管理器上下文菜单中使用Varun的ROBOCOPY命令行(即,右键单击),这里是Windows注册表导入。我尝试将其添加为他的答案的注释,但是内联标记不可行。
我已经在自己的Windows 10 PC上对此进行了测试,但后果自负。它将打开一个新的命令提示符,运行该命令,然后暂停,以便您可以看到输出。
复制到新的文本文件中:
Windows注册表编辑器版本5.00
[HKEY_CURRENT_USER \\\\\\\\ Software \\\\\\\\\\ Classes \\\\\\\\ directory \\\\\\\\\\ Background \\\\\\\\\\ shell \\\\\\\\\\ Delete Empty Folders \\\\\\\\\\ command]
@ = " C:\\\\\\\\ Windows \\\\\\\\\\ System32 \\\\\\\\\\ Cmd.exe / C \\\\" C:\\\\\\\\ Windows \\\\\\\\ System32 \\\\
obocopy.exe \\\\"%V \\\\" \\\\"%V \\\\" / s / move \\\\"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | @echo off set /p"ipa= ENTER FOLDER NAME TO DELETE>" set ipad="%ipa%" IF not EXIST %ipad% GOTO notfound IF EXIST %ipad% GOTO found :found echo DONOT CLOSE THIS WINDOW md ccooppyy xcopy %ipad%\\*.* ccooppyy /s > NUL rd %ipad% /s /q ren ccooppyy %ipad% cls echo SUCCESS, PRESS ANY KEY TO EXIT pause > NUL exit :notfound echo I COULDN'T FIND THE FOLDER %ipad% pause exit |
好吧,对于没有空格的简单1级目录结构,[edit]以及仅包含一种我认为有用的文件的目录(只是从http://www.pcreview.com提出的建议),这只是一个快速而肮脏的建议。 co.uk/forums/can-check-if-folder-empty-bat-file-t1468868.html):
1 | for /f %a in ('dir /ad/b') do if not exist %a\\*.xml echo %a Empty |
/ ad:仅显示目录条目
/ b:使用裸格式(仅名称)
[edit]使用纯星号检查任何文件(上面的%a \\\\\\\\ *)将不起作用,感谢您的纠正
因此,删除将是:
1 | for /f %a in ('dir /ad/b') do if not exist %a\\*.xml rmdir %a |