我需要运行一个程序,该程序需要查找特定驱动器中有多少可用空间(unc
或regular
)
CMD
我需要它在.( 没有 ps)下工作
目标 :
c:\> something e:
1902323213 //nevermind mb /gb
请注意:仅限数字!我没有处理字符串的工具(在我的软件中)
那么我尝试了什么?
我尝试过这个:
DIR \\dsmain\ls_BackUp\*.* | find "free"
得出的结果为:
2 Dir(s) 311,285,014,528 bytes free
我也尝试过这个:(最糟糕)
fsutil volume diskfree c:
得出的结果为:
Total # of free bytes : 54761066496
Total # of bytes : 255953203200
Total # of avail free bytes : 54761066496
问题 :
使用 cmd (无 ps) - 我如何运行返回的命令仅有的驱动器的可用空间?
注意:
Sql server 需要在远程位置打开 bak 文件,我需要检查那里的可用空间,因此 sql 执行 cmd 命令,然后我就可以捕获结果。所以我不想开始使用字符串操作来提取数字
答案1
可以使用命令行工具wmic
查询Win32_LogicalDisk
wmic LOGICALDISK where name="C:" get freespace
这将返回两行格式
FreeSpace
2881409024
或者
wmic LOGICALDISK where name="C:" get freespace | find /v "Free"
得出的只是数字
答案2
下面仅返回以字节为单位的可用空间。
@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "tokens=3" %%a in ('dir c:\') do (
set bytesfree=%%a
)
set bytesfree=%bytesfree:,=%
echo %bytesfree%
endlocal && set bytesfree=%bytesfree%
pause>nul
答案3
这是您可以在命令提示符中使用的单行命令:
for /f "tokens=3" %G in ('"dir /-c "\\dsmain\ls_BackUp\" "') do @set free=%G
要显示可用空间值,您可以echo
:
echo %free%
怎么运行的
命令的输出dir
逐行解析,直到最后。除非路径无效,否则最后一行始终包含可用空间量。为了避免处理千位分隔符(千位分隔符是区域感知的,可以自定义),您需要使用参数/-c
将其完全删除。每行都获得标记化使用空格作为分隔符,然后%free%
每次将第三个标记分配给变量。