- 论坛徽章:
- 0
|
本帖最后由 rdcwayx 于 2014-08-11 20:48 编辑
1298812 发表于 2014-07-31 10:07 ![]()
各位大侠,小弟有个问题请教一下:
bat脚本自动从备份服务器上下载备份数据,做异地备份,这个异地备份服务 ...
方法很多
defrag 可以
fsutil 可以
wmic 可以
我现在用的是 wmic方法- C:\Users\Pale>wmic volume where 'DriveLetter="R:"' get FreeSpace /value
- FreeSpace=1259118501888
复制代码 输出就是有很多空行。
并且不是ascii格式的,取值的时候要有点小技巧。
另外拿 windows nt6.1来说 set /a 运算 变量是 32位有符号整形数,这个的话 其实也就是2GB的大小。
处理大数字,你要有自己的方案。
我这里放一段完整判断,有些变量在其他地方定义,但不影响思路。- rem Check target volume free space
- for /f "delims=" %%A in ("%TA_BASE%") do set vp=%%~dA
- wmic volume where 'DriveLetter="!vp!"' get FreeSpace /value|find /i "FreeSpace=">"%tmp%\SOLAR\FreeSpace_!vp:~0,1!.TXT"
- for /f "usebackq delims== tokens=2" %%A in ("%tmp%\SOLAR\FreeSpace_!vp:~0,1!.TXT") do call :Calc %%~A
- set/a Target_FreeSpace=SUM/65536
- echo Target_FreeSpace=!Target_FreeSpace!GB
- call F_Check.bat "%~dpn0" "%PROCESSOR_ARCHITECTURE%" "Target_FreeSpace"
- if errorlevel 1 exit/b
- rem Sub program to extend calculation range to 10TB level
- :Calc
- set NUM=%~1
- set HighDigi=!NUM:~0,-4!
- set LowDigi=!NUM:~-4!
- set/a q=HighDigi/16384
- set/a r=HighDigi%%16384
- set part=!r!!LowDigi!
- set/a part/=16384
- set/a SUM=q*10000+part
- goto :EOF
复制代码 |
|