中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 14:27
48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » 求助,如何获取磁盘容量
可打印版本  2,028 / 21
第16楼 fastslz 发表于 2008-02-22 11:47
铂金会员 发帖 2,315 积分 5,493 来自 上海
Originally posted by fastslz at 2008-2-22 11:45:

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

运行环境Windows XP Professional 系统管理员身份
第17楼 beyond18wu 发表于 2008-02-22 12:43
初级用户 发帖 9 积分 22
我是用的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 ]
第18楼 terse 发表于 2008-02-22 12:58
银牌会员 发帖 946 积分 2,404
@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
第19楼 beyond18wu 发表于 2008-02-22 13:06
初级用户 发帖 9 积分 22
感谢18楼,非常感谢
第20楼 beyond18wu 发表于 2008-02-22 13:17
初级用户 发帖 9 积分 22
我想再问下:
set m3=%m:~0,7%
set m=%m:~7%
这两句看不懂,能帮解释下吗
第21楼 beyond18wu 发表于 2008-02-22 14:43
初级用户 发帖 9 积分 22
看懂了,字符截取
第22楼 fastslz 发表于 2008-02-22 16:39
铂金会员 发帖 2,315 积分 5,493 来自 上海
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楼代码优化过了
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023