免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 20333 | 回复: 15
打印 上一主题 下一主题

[其他] windows下bat脚本判断磁盘大小 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-31 10:07 |只看该作者 |倒序浏览
本帖最后由 rdcwayx 于 2014-08-11 20:53 编辑

各位大侠,小弟有个问题请教一下:
bat脚本自动从备份服务器上下载备份数据,做异地备份,这个异地备份服务器磁盘比较小,所以用:
  1. forfiles /p E:\back /s /m *.* /d -4 /c "cmd /c del @file"
复制代码
命令来删除过期的数据,但不知道下载是否成功,因此需要判断,只有在磁盘小于10G的情况下,
才进行删除动作,请教如果判断E盘磁盘大小小于10G?多谢。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2014-07-31 10:13 |只看该作者
你是用哪个命令做备份的?
xcopy
robocopy
ftp
...

为何不能判断下载是否成功?

论坛徽章:
0
3 [报告]
发表于 2014-07-31 14:10 |只看该作者
本帖最后由 rdcwayx 于 2014-08-11 20:53 编辑

用的是ftp。
  1. cd E:\back
  2. e:
  3. echo         ftp >1.txt
  4. echo                open 192.168.x.xxx>>1.txt
  5. echo                username>>1.txt
  6. echo                password>>1.txt
  7. echo         bin>>1.txt
  8. echo                get xxxx_backup_%date:~0,4%%date:~5,2%%date:~8,2%0100.bak>>1.txt
  9. ……
  10. echo           Bye>>1.txt
  11. echo                exit>>1.txt
  12. ftp -s:1.txt
  13. del 1.txt

  14. forfiles /p E:\back /s /m *.* /d -4 /c "cmd /c del @file"
复制代码
用计划任务执行上述脚本,如何判断所有备份都是成功的?多谢指教!

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
4 [报告]
发表于 2014-07-31 17:54 |只看该作者
回复 3# 1298812


cd E:\back
e:
echo         ftp >1.txt
echo                open 192.168.x.xxx>>1.txt
echo                username>>1.txt
echo                password>>1.txt
echo         bin>>1.txt
echo                get xxxx_backup_%date:~0,4%%date:~5,2%%date:~8,2%0100.bak>>1.txt
……
echo           Bye>>1.txt
echo                exit>>1.txt
ftp -s:1.txt
if errorlevel 1 (
    echo 下载失败
) else (
    forfiles /p E:\back /s /m *.* /d -4 /c "cmd /c del @file"
)

del 1.txt

你试试

论坛徽章:
0
5 [报告]
发表于 2014-07-31 18:12 |只看该作者
推荐nagios+check_mk

论坛徽章:
0
6 [报告]
发表于 2014-08-01 08:45 |只看该作者
回复 3# 1298812


    非常感谢,这个判断的确可以保证在下载成功的前提下去删除过期数据。但我还是想知道,如何判断当前盘符的剩余容量,能否再次赐教?

论坛徽章:
0
7 [报告]
发表于 2014-08-01 08:45 |只看该作者
回复 5# alonerhu


    请教具体如何操作,谢谢。

论坛徽章:
0
8 [报告]
发表于 2014-08-01 10:01 |只看该作者
本帖最后由 rdcwayx 于 2014-08-11 20:54 编辑

感谢Shell_HAT,在【Windows批处理】http://www.bathome.net找到相应的判断磁盘大小的脚本

以下是完整脚本:(生产环境实测)
  1. cd E:\back
  2. e:
  3. echo        ftp >1.txt
  4. echo        open 192.168.x.xxx>>1.txt
  5. echo        vsftpd>>1.txt
  6. echo        passw>>1.txt
  7. echo         bin>>1.txt
  8. echo    get xxx_backup_%date:~0,4%%date:~5,2%%date:~8,2%0100.bak>>1.txt
  9. echo    get xxx_backup_%date:~0,4%%date:~5,2%%date:~8,2%0100.bak>>1.txt
  10. echo        get xxx_file_%date:~0,4%%date:~5,2%%date:~8,2%.rar>>1.txt
  11. echo        get xxx_%date:~0,4%%date:~5,2%%date:~8,2%_wanshang.rar>>1.txt
  12. echo        get xxx_%date:~0,4%%date:~5,2%%date:~8,2%_wanshang.rar>>1.txt
  13. echo        get xxx_backup_%date:~0,4%%date:~5,2%%date:~8,2%0000.bak>>1.txt
  14. echo        get xxx_backup_%date:~0,4%%date:~5,2%%date:~8,2%0000.bak>>1.txt
  15. echo           Bye>>1.txt
  16. echo        exit>>1.txt
  17. ftp        -s:1.txt

  18. if errorlevel 1 (
  19.         echo 下载失败
  20. ) else (
  21.         set size=16106127360
  22.         for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DeviceID='E:'" get FreeSpace /value') do (
  23.                 if %%a gtr %size% (
  24.                         echo 大于15GB
  25.                 ) else if %%a lss %size% (
  26.                         forfiles /p E:\back /s /m *.* /d -4 /c "cmd /c del @file"
  27.                 ) else (
  28.                         echo 等于15GB
  29.                 )
  30.         )
  31. )

  32. del 1.txt
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
9 [报告]
发表于 2014-08-05 13:23 |只看该作者
回复 8# 1298812


代码测试没做好吧
if "%%a" gtr "%size%" 这个是字符串比较,不是数字比较

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
10 [报告]
发表于 2014-08-05 20:27 |只看该作者
楼主调整一下思路。 我曾经碰到类似的问题,原本用ftp脚本写,但是不太灵活,判断也不容易。 后来就考虑用perl写。

perl自带ftp 模块,可以很方便的做判断。比如磁盘大小,文件是否复制/删除。判断目录是否存在之类的。

你看一下perl 的ftp模块吧,这个用起来会事半功倍的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP