中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助]一个求盘符的问题. 上一主题 | 下一主题
AppleWolf
初级用户





积分 110
发帖 41
注册 2007-3-31
状态 离线
『楼 主』:  [求助]一个求盘符的问题.

问题如下:
1. 我要写个备份程序,这个程序需要映射网络驱动器,则需要使用系统中可以用的盘符.
2. 我的计算机上盘符环境有点特殊,C为硬盘,D为硬盘,E为光盘,F为虚拟光驱,Z为内存虚拟盘(主要用来存放操作系统页面文件和临时文件)

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

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

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

谢谢大家了.

2008-9-16 19:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hackate
中级用户





积分 228
发帖 125
注册 2008-8-25
状态 离线
『第 2 楼』:  

for /f "skip=1" %%i in ('wmic logicaldisk where "drivetype=3" get name') do @echo %%i

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

2008-9-16 20:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
AppleWolf
初级用户





积分 110
发帖 41
注册 2007-3-31
状态 离线
『第 3 楼』:  



  Quote:
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循环来筛选未使用的盘符

谢谢你的思路,尝试过,呵呵.

2008-9-16 20:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

尝试过这个没?
@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%




2008-9-16 21:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
shqf
初级用户





积分 35
发帖 18
注册 2008-8-10
状态 离线
『第 5 楼』:  


@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 ]

2008-9-16 22:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
AppleWolf
初级用户





积分 110
发帖 41
注册 2007-3-31
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by shqf at 2008-9-16 10:34 PM:
[code]
@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:也输出了。

再次感谢你。

2008-9-17 01:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
AppleWolf
初级用户





积分 110
发帖 41
注册 2007-3-31
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by HAT at 2008-9-16 09:50 PM:
尝试过这个没?
[code]@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 ...

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

谢谢!!

2008-9-17 01:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: