中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 18:40
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]一个求盘符的问题. 查看 896 回复 6
楼 主 [求助]一个求盘符的问题. 发表于 2008-09-16 19:35 ·  中国 浙江 宁波 北仑区 电信
初级用户
积分 110
发帖 41
注册 2007-03-31 17:20
19年会员
UID 83521
性别 男
状态 离线
问题如下:
1. 我要写个备份程序,这个程序需要映射网络驱动器,则需要使用系统中可以用的盘符.
2. 我的计算机上盘符环境有点特殊,C为硬盘,D为硬盘,E为光盘,F为虚拟光驱,Z为内存虚拟盘(主要用来存放操作系统页面文件和临时文件)

问题产生了,我搜了坛子里所有与"盘符"这个关键字有关的贴子,基本上都是在查找最后一个盘符,或下一个可用盘符.那么,在我的机子上,这是行不通的,因为最后一个盘符已经是Z了.

而我想做到的是,查找系统有多少还可以用于映射网络驱动器用的盘符,然后一一按条件赋值给变量.

不知有没有高手可以帮我一下.

谢谢大家了.
2 发表于 2008-09-16 20:06 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
17年会员
UID 124135
性别 男
状态 离线
for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get name') do @echo %%i

可以用WMIC获取你的计算机现有使用的盘符,然后捏?通过FOR循环来筛选未使用的盘符
3 发表于 2008-09-16 20:10 ·  中国 浙江 宁波 北仑区 电信
初级用户
积分 110
发帖 41
注册 2007-03-31 17:20
19年会员
UID 83521
性别 男
状态 离线
Originally posted by hackate at 2008-9-16 08:06 PM:
for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get name') do @echo %%i

可以用WMIC获取你的计算机现有使用的盘符,然后捏?通过FOR循环来筛选未使用的盘符


谢谢你的思路,尝试过,呵呵.
4 发表于 2008-09-16 21:50 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
尝试过这个没?
@echo off
set str=c d e f g h i j k l m n o p q r s t u v w x y z
for /f "tokens=2 delims=:=" %%a in ('wmic logicaldisk get DeviceID /value') do (
call set str=%%str:%%a=%%
)
echo %str%
5 发表于 2008-09-16 22:34 ·  中国 上海 奉贤区 电信
初级用户
积分 35
发帖 18
注册 2008-08-10 22:34
17年会员
UID 123138
性别 男
状态 离线

@echo off&setlocal enabledelayedexpansion
set var=c: d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: x: y: z:
for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
set "var=!var:%%i=!"
)

for %%i in (%var%) do (
set /a n+=1
set FreeDrive!n!=%%i
)
for /l %%i in (1,1,%n%) do echo !FreeDrive%%i!

pause


[ Last edited by shqf on 2008-9-16 at 10:40 PM ]
6 发表于 2008-09-17 01:41 ·  中国 浙江 电信
初级用户
积分 110
发帖 41
注册 2007-03-31 17:20
19年会员
UID 83521
性别 男
状态 离线
Originally posted by shqf at 2008-9-16 10:34 PM:

@echo off&setlocal enabledelayedexpansion
set var=c: d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: x: y: z:
for /f "delims=\" %%i in ('fsutil fsinfo drives^|fi ...


谢谢你的回复,不过有点小小的问题,输出时,把C:和Z:也输出了。

再次感谢你。
7 发表于 2008-09-17 01:42 ·  中国 浙江 电信
初级用户
积分 110
发帖 41
注册 2007-03-31 17:20
19年会员
UID 83521
性别 男
状态 离线
Originally posted by HAT at 2008-9-16 09:50 PM:
尝试过这个没?
@echo off
set str=c d e f g h i j k l m n o p q r s t u v w x y z
for /f "tokens=2 delims=:=" %%a in ('wmic logicaldisk get DeviceID /value' do (
call s ...


不愧是高手,果然利害,全符合要求!
在此感谢你对我的点拔!

谢谢!!
论坛跳转: