删除文件时获得释放 space
Get freed space when deleting files
我知道我可以使用像
这样的命令递归删除具有特定扩展名的所有文件
get-childitem c:\ -include *.tmp -recurse | foreach ($_) {remove-item $_.fullname}
但是我必须做什么才能在删除文件后检查释放的 space 大小?
有几种方法可以实现这一点。您可以在代码之前和之后使用 WMI 并检查差异。这可以被认为是一种更简单的方法。
$freeBefore = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object -Expand FreeSpace
...your code...
$freeAfter = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object -Expand FreeSpace
"Reclaimed {0:N4} MB of space" -f (($freeAfter - $freeBefore)/1MB)
注意 在上面的例子中,我将 C: 驱动器硬编码为 DeviceID
。这种方法的一个警告是 space 将取决于当时所有的计算机操作,而不仅仅是您自己的操作。与您正在做的事情无关的大文件转储会使数字发生偏差。
另一个想法是在处理数据时计算更改的大小,因为您已经可以访问 $file.length
(以字节为单位)
$total = 0
$size = 0
Get-ChildItem $path -Recurse -Include *.txt | ForEach-Object{
$size = $_.length
"Before $size"
Try{
Remove-Item $_.FullName
$total += $size
} Catch {
"Could not remove $($_.FullName)"
}
}
"Reclaimed {0:N4} MB of space" -f ($total/1MB)
后面的代码有它的缺点。一个是这将报告文件内容大小,但磁盘上的大小对于较小的文件来说会稍大一些。如果您有 1000 个只占用 10 个字节的 tmp 文件,则文件数据将比磁盘上的大小小得多,每个文件的大小为 4KB。
在任何一种情况下,您都应该考虑错误,因为整个本地磁盘上的文件尤其可能出现这种情况。 Tmp 文件可能会被无法删除的程序打开以供写入。 -Force
可以提供帮助,但并非总是如此。您需要小心 运行 编写这样的代码。
我知道我可以使用像
这样的命令递归删除具有特定扩展名的所有文件get-childitem c:\ -include *.tmp -recurse | foreach ($_) {remove-item $_.fullname}
但是我必须做什么才能在删除文件后检查释放的 space 大小?
有几种方法可以实现这一点。您可以在代码之前和之后使用 WMI 并检查差异。这可以被认为是一种更简单的方法。
$freeBefore = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object -Expand FreeSpace
...your code...
$freeAfter = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object -Expand FreeSpace
"Reclaimed {0:N4} MB of space" -f (($freeAfter - $freeBefore)/1MB)
注意 在上面的例子中,我将 C: 驱动器硬编码为 DeviceID
。这种方法的一个警告是 space 将取决于当时所有的计算机操作,而不仅仅是您自己的操作。与您正在做的事情无关的大文件转储会使数字发生偏差。
另一个想法是在处理数据时计算更改的大小,因为您已经可以访问 $file.length
(以字节为单位)
$total = 0
$size = 0
Get-ChildItem $path -Recurse -Include *.txt | ForEach-Object{
$size = $_.length
"Before $size"
Try{
Remove-Item $_.FullName
$total += $size
} Catch {
"Could not remove $($_.FullName)"
}
}
"Reclaimed {0:N4} MB of space" -f ($total/1MB)
后面的代码有它的缺点。一个是这将报告文件内容大小,但磁盘上的大小对于较小的文件来说会稍大一些。如果您有 1000 个只占用 10 个字节的 tmp 文件,则文件数据将比磁盘上的大小小得多,每个文件的大小为 4KB。
在任何一种情况下,您都应该考虑错误,因为整个本地磁盘上的文件尤其可能出现这种情况。 Tmp 文件可能会被无法删除的程序打开以供写入。 -Force
可以提供帮助,但并非总是如此。您需要小心 运行 编写这样的代码。