删除文件夹及其子文件夹中的所有文件

Bob*_*Jim 82 windows script powershell vbscript batch-file

我想从文件夹结构中删除所有文件,所以我只剩下一个空文件夹结构。

这可以在批处理或VBScript脚本中实现吗?

我尝试了一个非常基本的批处理命令,但这需要用户允许删除每个文件。这不是一个合适的解决方案,因为有数百个文件,并且随着时间的推移会大量增加。

你能提出什么建议?

MDM*_*313 96

这可以使用PowerShell来完成:

Get-ChildItem -Path C:\Temp -Include *.* -File -Recurse | foreach { $_.Delete()}
Run Code Online (Sandbox Code Playgroud)

此命令获取 中的每个子项$path,对每个子项执行删除方法,并且速度相当快。文件夹结构保持不变。

如果您可能有没有扩展名的文件,请使用

Get-ChildItem -Path C:\Temp -Include * -File -Recurse | foreach { $_.Delete()}
Run Code Online (Sandbox Code Playgroud)

反而。

看来该-File参数可能是在 PowerShell v2 之后添加的。如果是这样,那么

Get-ChildItem -Path C:\Temp -Include *.* -Recurse | foreach { $_.Delete()}
Run Code Online (Sandbox Code Playgroud)

对于具有扩展名的文件,它应该可以解决问题。

如果它不起作用,请检查您是否拥有最新版本的 Powershell

  • 他们不能实现`powershell --version`吗?他们不能使用带正数的版本号吗?这太疯狂了。[超过 1300 票](http://stackoverflow.com/questions/1825585/determine-installed-powershell-version) 关于如何找出程序版本号的问题? (2认同)

小智 70

简短而甜蜜的 PowerShell。不确定它可以使用的最低版本的 PS。

Remove-Item c:\Tmp\* -Recurse -Force
Run Code Online (Sandbox Code Playgroud)

  • 这不符合“所以我只剩下一个空文件夹结构”部分,它也会删除文件夹 (12认同)
  • 这将删除文件夹内的所有内容(包括子文件夹),但OP希望保留所有子文件夹。 (5认同)
  • 好,易于。这起到了作用,而接受的答案却没有! (4认同)
  • 这应该是公认的答案,您甚至可以只输入`rm *`,因为它不是真的建议强制执行(无论如何,确认对话框都有一个“全部是”选项)。 (2认同)
  • 这很好也很简单,但并不是 OP 所要求的。他想保留文件夹结构(但只是删除文件)。这将删除文件和文件夹,因此您将一无所有。 (2认同)

pho*_*ops 22

您可以使用以下del命令执行此操作:

dir C:\folder
del /S *
Run Code Online (Sandbox Code Playgroud)

/S开关是递归只删除文件。

  • 是的。您可以添加`/P` 选项,以便它会要求您确认每次删除以进行检查。 (5认同)
  • 是的。要删除隐藏文件和系统文件,请在删除前执行 `attrib -s -r -h Folder\*.* /s /d`。对于权限,请使用 `takeown` 命令。 (3认同)
  • 在使用通配符时,您可以使用 /Q 来 **NOT** 要求确认。 (3认同)
  • 这只会删除文件而保留文件夹吗? (2认同)

Gre*_*ian 5

使用 PowerShell:

Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse 
Run Code Online (Sandbox Code Playgroud)