我正在尝试从Windows主机通过UNC在NAS共享上使用File.getTotalSpace()和File.getFreeSpace()。
由于NAS中的各种链接,可用空间/总空间将根据所请求的特定目录而有所不同。
例如,在DOS框中:
dir \\nas\level1可能会返回12,234,567字节的空闲空间,但是:
dir \\nas\level1\level2\level3返回987,654,321字节的空闲空间。
我试着:
new File("\\\\nas\\level1\\level2\\level3").getFreeSpace();但这将返回12,234,567。getFreeSpace()和getTotalSpace()似乎是从路径的根目录(在本例中为\nas)检索报告的空间,而不是从我请求的级别检索。
如果我将UNC路径映射到驱动器号,例如:
net use s: \\nas\level1\level2\level3然后
new File("s:").getFreeSpace();将返回正确的值。但是我必须遍历一堆UNC路径,所以映射它们是不可行的。
那么,如何从我所请求的特定目录级别获取基于UNC的共享的空闲/总空间?
发布于 2016-01-28 05:00:44
我假设您从Windows资源管理器中获得了预期的已用空间/可用空间值。
如果是这样,您还应该能够以编程方式从WMI获取这些相同的值。
建议:
使用像jWMI.
下面是一个简单的PowerShell (.ps1)示例,来自上面的链接:
$disk = Get-WmiObject Win32_LogicalDisk -ComputerName remotecomputer -Filter "DeviceID='C:'" |
Foreach-Object {$_.Size,$_.FreeSpace}下面是另一个例子:
https://superuser.com/questions/911534/determine-the-size-of-a-network-folder
$startFolder = "\\pmintl.net\rbsdata\SPA_BB01"
$colItems = (Get-ChildItem $startFolder | Measure-Object -property length -sum)
"$startFolder -- " + "{0:N2}" -f ($colItems.sum / 1MB) + " MB"
$colItems = (Get-ChildItem $startFolder -recurse | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object)
foreach ($i in $colItems)
{
$subFolderItems = (Get-ChildItem $i.FullName | Measure-Object -property length -sum)
$i.FullName + " -- " + "{0:N2}" -f ($subFolderItems.sum / 1MB) + " MB"
}https://stackoverflow.com/questions/35046955
复制相似问题