Bon*_*rse 15 windows batch command-line vbscript
我正在尝试创建一个批处理文件来提取服务器的 C:\ 驱动器的总大小和可用空间(本地运行脚本)。我还需要输出易于阅读,因此字节无法正常工作,因此我可以使用创建临时 .vbs 文件的命令行。
以下似乎可以工作,但格式/数学不正确。
setlocal
for /f "tokens=6" %a in ('fsutil volume diskfree C: ^| find "of bytes"') do set diskspace=%a
echo wsh.echo FormatNumber(cdbl(%diskspace%)/1024, 0) > %temp%.\tmp.vbs
for /f %a in ('cscript //nologo %temp%.\tmp.vbs') do set diskspace=%a
del %temp%.\tmp.vbs
echo For example %diskspace%
Run Code Online (Sandbox Code Playgroud)
上面的命令也只显示可用空间......我也想要总大小......想知道以下命令是否更适合提取信息:
WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:"
Run Code Online (Sandbox Code Playgroud)
另请注意,我希望能够将其直接复制/粘贴到命令提示符中(不是批处理文件 - 强制要求)。我已经从上面的代码中删除了“%%”。
注意:需要在 Server 2003+ 上本机运行(因此 Powershell 以及任何 3rd 方实用程序已经过时)。
Ƭᴇc*_*007 13
我意识到您现在正在寻找 VBS,但 PowerShell 可以很容易地做到这一点:
$disk = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object Size, FreeSpace
Write-Host ("{0}GB total" -f [math]::truncate($disk.Size / 1GB))
Write-Host ("{0}GB free" -f [math]::truncate($disk.FreeSpace / 1GB))
Run Code Online (Sandbox Code Playgroud)
第一行从 WMI 获取磁盘信息(在本例中仅使用 C:),并仅选择可用空间和总大小。
在接下来的两行中,将可用空间和总大小写入控制台,格式为 GB,截断小数部分。
示例输出(原样):
223GB total
125GB free
Run Code Online (Sandbox Code Playgroud)
Jos*_*efZ 11
在非批处理文件 - 强制要求条款下,下cmd
一个单行可以帮助:
for /f "tokens=1-3" %a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FINDSTR /I /V "Name"') do @echo wsh.echo "%b" ^& " free=" ^& FormatNumber^(cdbl^(%a^)/1024/1024/1024, 2^)^& " GiB"^& " size=" ^& FormatNumber^(cdbl^(%c^)/1024/1024/1024, 2^)^& " GiB" > %temp%\tmp.vbs & @if not "%c"=="" @echo( & @cscript //nologo %temp%\tmp.vbs & del %temp%\tmp.vbs
Run Code Online (Sandbox Code Playgroud)
输出:
==>for /f "tokens=1-3" %a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FIND
STR /I /V "Name"') do @echo wsh.echo "%b" ^& " free=" ^& FormatNumber^(cdbl^(%a^
)/1024/1024/1024, 2^)^& " GiB"^& " size=" ^& FormatNumber^(cdbl^(%c^)/1024/1024/
1024, 2^)^& " GiB" > %temp%\tmp.vbs & @if not "%c"=="" @echo( & @cscript //nolog
o %temp%\tmp.vbs & del %temp%\tmp.vbs
C: free=79,11 GiB size=111,45 GiB
D: free=929,47 GiB size=931,51 GiB
==>
Run Code Online (Sandbox Code Playgroud)