如何批量确保它有足够的磁盘space?

How can I make sure its enough disk space in batch?

有谁知道是否可以确保磁盘在具有批处理功能的服务器上有足够的 space?

我有一个循环的批处理脚本,我想在其中添加一个部分,以确保磁盘上有足够的 space 并在没有时给我一条消息。像这样,很容易解释:

Check diskspace
 If below 10mb free space
  echo low diskspace (& probably delete temp files or something)
   else continue

感谢您的帮助!

这使用 dir 命令的输出来检索免费的 space。所有测试都在一个子例程中进行,该子例程接收要检查的 "drive" 作为参数和所需的字节数。退出时,如果没有足够的空闲 space.

,它会提高错误级别

批处理文件中的算术运算仅限于 2^31 个有符号整数,因此要处理大于 2147483647 的值并处理超过 2GB 的存储单元,需要更多代码。为避免这种情况,所有信息都是 indicated/retrieved 字节,填充并作为字符串进行比较。

@echo off
    setlocal enableextensions disabledelayedexpansion

    call :checkFreeSpace d: 123456789 && echo OK || echo No space

    call :checkFreeSpace "\10.0.0.1\c$" 2000000000
    if errorlevel 1 (
        echo No space
    ) else (
        echo OK
    )

    goto :eof

:checkFreeSpace drive spaceRequired
    setlocal enableextensions disabledelayedexpansion
    set "pad=0000000000000000000000000"
    set "required=%pad%%~2"
    for %%d in ("%~1\.") do for /f "tokens=3" %%a in ('
        dir /a /-c "%%~fd" 2^>nul ^| findstr /b /l /c:"  " 
    ') do set "freeSpace=%pad%%%a"
    if "%freeSpace:~-25%" geq "%required:~-25%" exit /b 0
    exit /b 1

注意:此方法有一个注意事项。如果指示的目标是驱动器根目录并且其中没有任何 file/folder,则 dir 命令将找不到要列出的任何内容,并且空闲 space 将不会包含在其输出中,使测试失败,因为 free space 将为 0