Windows快速删除大量文件和文件夹

系列 - Delete File and Directory

当删除大量文件和文件夹时, 通过Windows资源管理器来删除, 速度是非常慢的。

Stack Overflow上的吐槽

The worst way is to send to Recycle Bin: you still need to delete them.

Next worst is shift+delete with Windows Explorer: it wastes loads of time checking the contents before starting deleting anything.

在cmd中, 最好的方法是使用以下命令:

1
2
3
4
5
6
7
8
del /f/s/q folder > nul
rd /s/q folder
# 多个文件夹时
del /f/s/q folder1 folder2 > nul
rd /s/q folder1 folder2
# 文件夹名有空格时
del /f/s/q "folder name" > nul
rd /s/q "folder name"

del /f/s/q folder > nul命令递归删除该目录下所有文件, 并将输出设为空, 以避免将每个文件的删除结果输出到屏幕的开销。

del命令的官方文档, 有关上述参数的其他信息:

  • /f: 强制删除。
  • /s: 递归删除。显示要删除的文件的名称。
  • /q: 安静模式。删除时不提示用户确认删除。
提示
  1. rd等同于rmdir
  2. 虽然rdrmdir也可以直接递归删除目录和目录下所有文件, 看起来一步到位, 但是它的速度比del慢, 在文件非常多的情况下, 对比明显。

rd /s/q folder命令清理剩余的目录结构 (这些目录已经空了, 也可以直接Shift+Delete删除) 。

rd命令的官方文档, 有关上述参数的其他信息:

  • /s: 递归删除。
  • /q: 安静模式。删除时不提示用户确认删除。 (请注意, 只有在指定了/s时, /q才有效。)

在PowerShell中, 最好的方法是使用以下命令:

1
2
3
4
5
Remove-Item -Force -Recurse folder
# 多个文件夹时
Remove-Item -Force -Recurse folder1,folder2
# 文件夹名有空格时
Remove-Item -Force -Recurse "folder name"

推荐使用它们的别名, 简单易记:

1
2
3
4
5
rm -Force -r folder
# 多个文件夹时
rm -Force -r folder1,folder2
# 文件夹名有空格时
rm -Force -r "folder name"

其实在PowerShell中, rmdir也是Remove-Item的别名。

Remove-Item命令的官方文档, 有关上述参数的其他信息:

  • LiteralPath: 指定一个或多个位置的路径。
  • Force: 强制删除。
  • Recurse: 递归删除。