首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带UNC的getTotalSpace()

带UNC的getTotalSpace()
EN

Stack Overflow用户
提问于 2016-01-28 04:02:54
回答 1查看 470关注 0票数 1

我正在尝试从Windows主机通过UNC在NAS共享上使用File.getTotalSpace()File.getFreeSpace()

由于NAS中的各种链接,可用空间/总空间将根据所请求的特定目录而有所不同。

例如,在DOS框中:

代码语言:javascript
复制
dir \\nas\level1

可能会返回12,234,567字节的空闲空间,但是:

代码语言:javascript
复制
dir \\nas\level1\level2\level3

返回987,654,321字节的空闲空间。

我试着:

代码语言:javascript
复制
new File("\\\\nas\\level1\\level2\\level3").getFreeSpace();

但这将返回12,234,567。getFreeSpace()getTotalSpace()似乎是从路径的根目录(在本例中为\nas)检索报告的空间,而不是从我请求的级别检索。

如果我将UNC路径映射到驱动器号,例如:

代码语言:javascript
复制
net use s: \\nas\level1\level2\level3

然后

代码语言:javascript
复制
new File("s:").getFreeSpace();

将返回正确的值。但是我必须遍历一堆UNC路径,所以映射它们是不可行的。

那么,如何从我所请求的特定目录级别获取基于UNC的共享的空闲/总空间?

EN

回答 1

Stack Overflow用户

发布于 2016-01-28 05:00:44

我假设您从Windows资源管理器中获得了预期的已用空间/可用空间值。

如果是这样,您还应该能够以编程方式从WMI获取这些相同的值。

建议:

使用像jWMI.

下面是一个简单的PowerShell (.ps1)示例,来自上面的链接:

代码语言:javascript
复制
$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

代码语言:javascript
复制
$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"
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35046955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档