如何在不升级系统的情况下在Windows 10终端上确定磁盘上的可用字节数?

如何在不升级系统的情况下在Windows 10终端上确定磁盘上的可用字节数?

如果我运行这个命令:

fsutil 卷磁盘空闲 e:

我得到:

错误:访问被拒绝。

只有通过手动打开“提升的”cmd.exe,它才会输出命令的实际输出。

我需要一个(内置)命令来确定给定磁盘(驱动器号)的可用空间,即使 cmd.exe 不是“提升的”(管理员)。

(它需要提升的原因显然是“fsutil”也可以做很多其他的事情。)

答案1

这与@It Wasn't Me 的回答一致

如果你只是想快速查看输出,这通常是最快的:

DIR /AD/D E: | FIND /I " bytes free"

--[Result]--
               1 Dir(s)  28,616,892,416 bytes free

DIR /AD仅返回目录,/D范围较宽,这意味着每行返回许多条目。如果您有大量目录,但只有少数文件,请将其更改为DIR /A-D/D

我不明白为什么你需要摆脱这个输出的格式,因为FSUtil提供了一堆额外的文本并且它在问题中没有提到,它还包括逗号。

如果您确实想删除逗号,则提及/-C将删除逗号。

如果您想要单独使用数字(无论是否带逗号),则循环for /f是必要的,@It Wasn't Me's 已经很好地介绍了这一点。

答案2

1.使用 cmd 内部命令dir/e从输出中/-c删除,

17 Dir(s)  21,489,500,160 bytes free

2.for /f使用循环重定向中的第三个标记来过滤以“字节”+ [一个字符] +“免费”结尾的行findstr /End

1º   2º                       *º
_| _____|  __________| __________*
17 Dir(s)  21489500160 bytes free  
tokens  =           |----------| is the same bytes.free to findstr

  • 对于命令行:
for /f "tokens=3delims= " %i in ('dir E: /d /-c ^|findstr /e bytes.free')do @echo\%i

  • 对于 bat 文件替换%i%%i
@echo off 

for /f "tokens=3delims= " %%i in ('dir E: /d /-c ^|findstr /e bytes.free')do echo\%%i

  • 您可以从 PowerShell 获得一些帮助,将可用大小转换为 GB:
@echo off 

for /f "tokens=3delims= " %i in ('dir E: /d /-c ^|findstr /e bytes.free
')do Powershell -nop -c "$free=[math]::round(8357258532/1GB); Write-host $free'GB' -NoNewline

答案3

你可以dir这样做(自 Vista IIRC 以来)wmic

 wmic volume where driveletter="E:" get freespace
 wmic volume get driveletter,freespace | findstr E:

或者如果你使用 Powershell,它可以在没有帮助的情况下完成整个工作:

 powershell -c write-host (get-volume -driveletter c).sizeremaining
 powershell -c write-host [math]::round((get-volume -driveletter c).sizeremaining/1GB)

相关内容