中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 19:03
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何用批处理检测到硬盘中的分区数量。
楼 主 [已结]如何用批处理检测到硬盘中的分区数量。 发表于 2007-03-12 03:37 ·  中国 广东 广州 番禺区 电信
中级用户
★★
脚本爱好者
积分 238
发帖 93
注册 2007-03-11 13:38
UID 81417
性别 男
来自 GZ
状态 离线
制作一个在Win下做Ghost备份还原的小程序,需要检测硬盘中的分区数(插入U盘时也不影响检测结果),以便把备份文件自动存放到最后分区中,我知道用Ghost32.exe可以做到,但我想用批处理来完成应该更简单些,请问如何做到?

[ Last edited by axi on 2007-3-20 at 09:17 PM ]
2 发表于 2007-03-12 05:19 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
UID 46459
状态 离线
@echo off
set num=
for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
fsutil fsinfo drivetype %%i: | find /i "固定" >nul 2>nul && set /a num+=1
)
echo 本地磁盘分区有 %num% 个。
pause>nul
3 发表于 2007-03-12 05:38 ·  中国 四川 绵阳 江油市 电信
高级用户
★★★
积分 502
发帖 327
注册 2006-12-30 06:01
UID 74981
性别 男
状态 离线
试试这个
@echo off
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=\" %%a in ('fsutil fsinfo drives^|find /v ""') do (
set aa=%%a
set aa=!aa:~-2!
for /f "tokens=1 " %%i in ('fsutil fsinfo drivetype !aa! ^|find "固定"') do @echo %%i
)
pause
4 发表于 2007-03-12 10:31 ·  中国 广东 广州 番禺区 电信
中级用户
★★
脚本爱好者
积分 238
发帖 93
注册 2007-03-11 13:38
UID 81417
性别 男
来自 GZ
状态 离线
htysm 的方法是可以,但插入U盘后检多了一个分区,请问如何解决呢?
5 发表于 2007-03-12 10:32 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

Wmic LogicalDisk get caption,description,freespace
6 发表于 2007-03-12 10:35 ·  中国 广东 广州 番禺区 电信
中级用户
★★
脚本爱好者
积分 238
发帖 93
注册 2007-03-11 13:38
UID 81417
性别 男
来自 GZ
状态 离线
qingfushuan 的方法是获取各分区盘符,但也把U盘也列出,也请问有无方法解决?
7 发表于 2007-03-12 12:31 ·  中国 新疆 塔城地区 电信
中级用户
★★
积分 354
发帖 83
注册 2003-03-23 00:00
UID 1232
性别 男
状态 离线
看不明白呀,
8 发表于 2007-03-12 13:21 ·  中国 黑龙江 哈尔滨 电信
高级用户
★★★
积分 760
发帖 357
注册 2005-10-10 22:33
UID 43332
状态 离线
老葛的东西呀!
呵呵
9 发表于 2007-03-12 21:34 ·  中国 河南 开封 教育网
中级用户
★★
积分 214
发帖 94
注册 2007-01-11 10:39
UID 76165
性别 男
状态 离线
有个drvtypes会显示所有现有盘符,及相关信息,批处理判断其信息,可以把U盘A、B、内存盘、各种光驱盘剔掉。。
10 发表于 2007-03-12 22:51 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
UID 46459
状态 离线
2楼的代码不会显示U盘的.除非你是移动硬盘.
11 发表于 2007-03-13 01:00 ·  中国 四川 绵阳 江油市 电信
高级用户
★★★
积分 502
发帖 327
注册 2006-12-30 06:01
UID 74981
性别 男
状态 离线
Originally posted by axi at 2007-3-11 09:35 PM:
qingfushuan 的方法是获取各分区盘符,但也把U盘也列出,也请问有无方法解决?



『第 13 楼』:

试试下面的可以吗?

@echo off
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=\" %%a in ('fsutil fsinfo drives^|find /v ""') do (
set aa=%%a
set aa=!aa:~-2!
for /f "tokens=1 " %%i in ('fsutil fsinfo drivetype !aa! ^|findstr /i "固定 移动"') do @echo %%i
)
pause
12 发表于 2007-03-13 01:25 ·  中国 江苏 连云港 电信
高级用户
★★★
前进者
积分 641
发帖 303
注册 2007-01-10 02:57
UID 76009
性别 男
状态 离线
wmic logicaldisk where(drivetype='3') get caption
我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
13 发表于 2007-03-13 01:48 ·  中国 广东 广州 番禺区 电信
中级用户
★★
脚本爱好者
积分 238
发帖 93
注册 2007-03-11 13:38
UID 81417
性别 男
来自 GZ
状态 离线
13 楼的方法试过,还是不行,我的u盘是被视作移动硬盘。
论坛跳转: