当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 删除 Windows 中的空目录 - 最快的方法

作者:精品下载站 日期:2024-12-14 18:49:20 浏览:16 分类:玩电脑

删除 Windows 中的空目录 - 最快的方法


使用小型 PowerShell 脚本或 RoboCopy cmd 删除 Windows 10 中的空目录非常简单。实际上不需要安装任何程序来清理计算机或服务器上的空目录。

通过使用 Windows 10 中包含的 PowerShell 或 RoboCopy,我们可以删除所有空文件夹和子文件夹。首先列出空目录总是一个好主意,因此我在两个脚本中添加了该选项。

下面是两个脚本的示例。我还针对具有 11.000 个空子目录的目录测试了 PowerShell 和 RoboCopy 脚本,以查看哪个选项最快。

使用 PowerShell 删除空目录

您将在下面找到使用 PowerShell 删除空目录的脚本。如果您想先测试脚本(我强烈建议这样做),那么您可以将变量 $whatif 设置为 $true

Windows 在包含图像的文件夹中创建一个隐藏文件 Thumbs.db。这些文件夹似乎是空的,即使在资源管理器中显示隐藏文件,您也看不到 Thumbs.db。因此,要删除这些空文件夹,您可以将 removeHiddenFiles 设置为 $true

然后,该脚本将忽略隐藏文件并删除包含隐藏文件的文件夹。

# Set to true to test the script
$whatIf = $true

# Remove hidden files, like thumbs.db
$removeHiddenFiles = $false

# Get hidden files or not. Depending on removeHiddenFiles setting
$getHiddelFiles = !$removeHiddenFiles

# Remove empty directories locally
Function Delete-EmptyFolder($path)
{
    # Go through each subfolder, 
    Foreach ($subFolder in Get-ChildItem -Force -Literal $path -Directory) 
    {
        # Call the function recursively
        Delete-EmptyFolder -path $subFolder.FullName
    }

    # Get all child items
    $subItems = Get-ChildItem -Force:$getHiddelFiles -LiteralPath $path

    # If there are no items, then we can delete the folder
    # Exluce folder: If (($subItems -eq $null) -and (-Not($path.contains("DfsrPrivate")))) 
    If ($subItems -eq $null) 
    {
        Write-Host "Removing empty folder '${path}'"
        Remove-Item -Force -Recurse:$removeHiddenFiles -LiteralPath $Path -WhatIf:$whatIf
    }
}

# Run the script
Delete-EmptyFolder -path "C:\enter\your\path\here"

在脚本中,我们首先设置WhatIf模式。这样我们就可以测试脚本而无需实际删除任何文件夹。

接下来,我们有函数Delete-EmptyFolder。该函数将遍历给定路径的每个子文件夹,并递归调用该函数来处理子文件夹。

如果没有任何子文件夹,那么它将请求当前文件夹中的所有子项目。如果没有任何子项,则脚本将删除空目录。

PowerShell 删除空目录的速度有多快?

[玩转系统] 删除 Windows 中的空目录 - 最快的方法

我针对包含 11.000 个空子目录的目录测试了这两个脚本,深度为 3 层。 PowerShell 需要12 秒来删除所有空目录。也就是说,当您在第 27 行禁用 Write-Host 输出时。通过该输出,总共花费了 24 秒。

运行脚本

运行此脚本的最简单方法是打开Windows PowerShell ISE。这样您就可以轻松更改路径和 WhatIf 变量。 Windows PowerShell ISE 也是 Windows 10 的标准程序,您可以在“开始”菜单中找到它。

[玩转系统] 删除 Windows 中的空目录 - 最快的方法

  1. 单击开始

  2. 键入PowerShell

  3. 选择Windows PowerShell ISE

  4. 复制上面的脚本

  5. 将代码粘贴到脚本部分(您可能需要先展开它,请参见红色箭头)

  6. 更改路径并确保首先将 WhatIf 设置为 true

  7. 单击绿色按钮运行脚本。

[玩转系统] 删除 Windows 中的空目录 - 最快的方法

使用 RoboCopy 删除空文件夹

删除空文件夹的另一个选项是使用 RoboCopy。该命令行实用程序自 Windows 7 起内置于 Windows 中,可在 PowerShell 或 CMD 中使用。

RoboCopy 的技巧实际上是将目录移动到同一文件夹。 /S 选项复制所有子目录,但排除空文件夹。只需确保在 RoboCopy 中使用完全相同的路径两次即可。

# Make sure both paths are exactly the same
robocopy "c:\path\to\directory" "c:\path\to\directory" /S /move

如果您首先想使用 RoboCopy 列出所有空目录,您可以使用 /L 开关。

robocopy "c:\path\to\directory" "c:\path\to\directory" /S /move /L

使用 RoboCopy 的缺点

使用 RoboCopy 方法有一个缺点,它不会删除其中包含 Thumbs.db 的空目录。这是 Windows 在包含图像的文件夹中创建的一个小文件。如果该目录进一步为空,您可以安全地删除此文件。

使用 PowerShell,我们可以忽略该文件并将其与空目录一起删除。我们不能用 RoboCopy 做这样的事情。

RoboCopy 删除空文件夹的速度有多快?

[玩转系统] 删除 Windows 中的空目录 - 最快的方法

Robocopy 比 PowerShell 快得多。删除 11.000 个目录平均只花费4 秒

包起来

始终首先测试脚本,使用 WhatIf 模式,或在几个测试文件夹上运行它,以便确保它按方面工作。

RoboCopy 方法比 PowerShell 快得多,但请记住,它不会删除其中包含 Thumbs.db 的目录。

如果您有任何疑问,请在下面发表评论。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯