如何编写CMD批处理检测HDD剩余空间 仅≥30GB可用时执行脚本
CMD批处理实现备份前磁盘空间校验方案
实现代码
@echo off setlocal enabledelayedexpansion :: -------------------------- 配置项 -------------------------- :: 设置备份文件存储的HDD盘符,注意末尾带冒号 set "BackupDrive=D:" :: 剩余空间阈值,单位:字节,当前为30GB = 30*1024*1024*1024 set "MinFreeSpace=32212254720" :: ----------------------------------------------------------- :: 查询目标磁盘剩余可用空间 set "FreeSpace=0" for /f "tokens=2 delims==" %%a in ('wmic logicaldisk where "DeviceID='%BackupDrive%'" get FreeSpace /value ^| findstr /r "FreeSpace"') do ( set "FreeSpace=%%a" ) :: 空间校验 if !FreeSpace! lss %MinFreeSpace% ( echo [错误] 备份磁盘%BackupDrive%剩余空间不足30GB,备份任务终止。 echo 当前剩余空间: !FreeSpace! 字节,要求最低剩余: %MinFreeSpace% 字节 exit /b 1 ) echo [信息] 磁盘空间校验通过,开始执行备份流程... :: 下方粘贴你原有的备份脚本逻辑即可 :: 例如:xcopy /e /h "C:\需要备份的文件" "%BackupDrive%\备份目录\" endlocal
使用说明
- 使用前先修改代码开头配置段的
BackupDrive变量,填入你备份存储所在的HDD盘符,格式为盘符:,例如存到E盘就写E: - 30GB阈值已经预先换算为字节值写入
MinFreeSpace变量,如果后续需要调整最低剩余空间要求,按照目标GB数 * 1024 * 1024 * 1024的公式计算出字节值替换即可 - 把你原本的备份执行逻辑粘贴到代码中标注的原有备份逻辑位置即可
- 当磁盘剩余空间不足30GB时,脚本会直接打印错误信息并返回错误码1,终止执行,不会继续跑后续备份流程,从根源避免假成功问题
兼容性说明
所有逻辑均使用Windows原生CMD内置命令与WMI组件实现,无PowerShell依赖,无需安装第三方工具,可在Windows 7及以上所有桌面、服务器版本Windows系统上直接运行。
注意:如果你的备份路径是某盘符下的子目录,只需要填写该目录所在的根盘符即可,逻辑盘剩余空间是整个盘共享的,不需要针对子目录单独统计。
内容的提问来源于stack exchange,提问作者MrJezbud
相关产品推荐
相关产品推荐

