中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 求助,如何获取磁盘容量 上一主题 | 下一主题
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 16 楼』:  



  Quote:
Originally posted by fastslz at 2008-2-22 11:45:

13楼只针对繁体版XP,简体的用4楼

运行环境Windows XP Professional 系统管理员身份



第一高手    第二高手

2008-2-22 11:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
beyond18wu
初级用户





积分 22
发帖 9
注册 2008-2-21
状态 离线
『第 17 楼』:  

我是用的4楼的,我把代码改为
@echo off
for /f "skip=1 delims= " %%a in ('"Wmic LogicalDisk Where DriveType="2" Get DeviceID|find /v "A:""') do set drivename=%%a
pause

如果电脑未接移动磁盘的话 set drivename=%%a 会是什么结果?
drivename 有没有赋值?  
  我是想当电脑未接可移动磁盘的时候提示输出 :未找到可移动磁盘

[ Last edited by beyond18wu on 2008-2-22 at 12:47 PM ]

2008-2-22 12:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 18 楼』:  

@echo off&color b
for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype='2'" get DeviceID 2^>nul') do  set p=%%a
if "%p%"=="" echo.&echo               未找到可移动磁盘 &echo.&pause&goto :eof
for /f "tokens=2 delims==" %%i in ('wmic logicaldisk where caption^=^"%p%^" get freespace /value 2^>nul') do set m=%%i
set m3=%m:~0,7%
set m=%m:~7%
call :loop "1048576"
:loop1
if %m2% LSS 1024 echo.&cls&echo.&echo.&echo.                     %p% 盘剩余空间为 %m2% MB&pause>nul&goto :eof
set m=%m2%
set m3=%m:~0,3%
set/a m=%m:~3%*1000
for %%i in (m1 m2) do set %%i=
call :loop "1024"
for /f "delims=0 tokens=*" %%i in ("%m2%") do set m=%%i
set g=%m:~0,-3%.
set g=%g%%m:~-3,3%  G
cls
:m
echo.
echo.
echo.                     %p% 盘剩余空间为 %g%
echo.
pause>nul
goto :eof
:loop
set /a m1=%m3%%m:~0,1%/%~1
set m2=%m2%%m1%
set /a m3=%m3%%m:~0,1%%%%~1
if %m3% equ 0 set m3=
set m=%m:~1%
if not "%m%"=="" goto loop
goto :eof



简单!简单!再简单!
2008-2-22 12:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
beyond18wu
初级用户





积分 22
发帖 9
注册 2008-2-21
状态 离线
『第 19 楼』:  

感谢18楼,非常感谢

2008-2-22 13:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
beyond18wu
初级用户





积分 22
发帖 9
注册 2008-2-21
状态 离线
『第 20 楼』:  

我想再问下:
set m3=%m:~0,7%
set m=%m:~7%
这两句看不懂,能帮解释下吗

2008-2-22 13:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
beyond18wu
初级用户





积分 22
发帖 9
注册 2008-2-21
状态 离线
『第 21 楼』:  

看懂了,字符截取

2008-2-22 14:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by beyond18wu at 2008-2-22 12:43:
我是用的4楼的,我把代码改为
@echo off
for /f "skip=1 delims= " %%a in ('"Wmic LogicalDisk Where DriveType="2" Get DeviceID|find /v "A:""') do set drivename=%%a
pause

如果电脑未接移动磁盘的话 set drivename=%%a 会是什么结果?
drivename 有没有赋值?  
  我是想当电脑未接可移动磁盘的时候提示输出 :未找到可移动磁盘

这个其实很简单最后加上if not defined freesize echo 未找到可移动磁盘就OK了

4楼代码优化过了



第一高手    第二高手

2008-2-22 16:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: