windows - 检查所有驱动器(字母和自由大小)并比较高数字自由大小

标签 windows batch-file cmd

我在比较大量 PC 磁盘时遇到问题。

脚本:

for /f "tokens=* delims== skip=1" %%x in ('"wmic.exe logicaldisk where DriveType=3 get DeviceID,FreeSpace,Size"') do (
    for /f "tokens=1-3" %%a in ("%%x") do (
        set "DiskID=%%a" & set "DiskFree=%%b"
        if !DiskFree! gtr !DiskFreeFinal! Set "DiskIDFinal=!DiskID!" && set "DiskFreeFinal=!DiskFree!"
    )
)
echo Biggest free space is on drive: %DiskIDFinal% (%DiskFreeFinal%)

输出的尺寸不正确,不是真实的。

最佳答案

您的批处理重新处理以对大数字(高达 88817 PetaByte)进行基于字符串的比较

:: Q:\Test\2018\06\27\SO_51057439.cmd
@Echo off&SetLocal EnableDelayedExpansion
Set "Space=                    "
Set "DiskFreeFinal=%Space%"
for /f "tokens=* delims== skip=1" %%x in (
  '"wmic.exe logicaldisk where DriveType=3 get DeviceID,FreeSpace,Size"'
) do for /f "tokens=1-3" %%a in ("%%x") do (
    set "DiskFree=%Space%%%b"
    Rem Echo %%a !DiskFree:~-20!
    if "!DiskFree:~-20!" gtr "!DiskFreeFinal:~-20!" (
        set "DiskIDFinal=%%a"
        set "DiskFreeFinal=!DiskFree!"
    )
)
echo Biggest free space is on drive: %DiskIDFinal% (%DiskFreeFinal: =%)

示例输出(包括 REMed out 行):

> .\SO_51057439.cmd
A:           1049407488 1049407488
C:         113724567552 113724567552
D:        1090293293056 1090293293056
G:         778550509568 778550509568
H:             68505600 68505600
Biggest free space is on drive: D: (1090293293056)

关于windows - 检查所有驱动器(字母和自由大小)并比较高数字自由大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51057439/

相关文章:

.net - 为什么没有 Microsoft.Win64 命名空间?

python - 如何获取执行卡住脚本的路径

.net - Subversion 保存到哪里?

c++ - 批处理文件不适用于启动命令

windows - 使用 COPY 命令合并文件并获取奇数字符

python - pipenv 安装错误 ImportError : cannot import name 'ensure_file_on_disk'

batch-file - 在文件开头跳过Microsoft的消息

windows - 批量测试变量是否等于空格

linux - echo 输出在 Linux 和 Windows 操作系统上不同

cmd - 使用动态文件名批处理 mp3