是否有人知道是否可以确保磁盘在具有批处理的服务器上有足够的空间?
我有一个循环的批处理脚本,在此我想添加一个部分,确保磁盘上有足够的空间,如果不是,则给我一条消息。像这样,很容易解释:
Check diskspace
If below 10mb free space
echo low diskspace (& probably delete temp files or something)
else continue
感谢您的帮助!
答案 0 :(得分:1)
这使用dir
命令的输出来检索可用空间。所有测试都在一个子程序中被破坏,该子程序接收要检查的“驱动器”和所需的字节数作为参数。退出时,如果没有足够的可用空间,则会引发错误级别。
批处理文件中的算术限制为2 ^ 31个有符号整数,因此要处理大于2147483647的值并使用超过2GB的存储单元,需要更多代码。为了避免这种情况,所有信息都以字节表示/检索,填充并作为字符串进行比较。
@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
注意:这种方法有一点需要注意。如果指示的目标是驱动器根目录并且其中没有任何文件/文件夹,则dir
命令将找不到要列出的任何内容,并且可用空间将不会包含在其输出中,从而使测试失败,因为自由空间将为0