中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: [急]关于如何获得光驱盘符 上一主题 | 下一主题
okjacky
新手上路





积分 8
发帖 8
注册 2009-8-11
状态 离线
『楼 主』:  [急]关于如何获得光驱盘符 使用 LLM 解释/回答一下

本人想获取电脑的光驱的盘符,写了一段代码如下:

set insDriverName=""   
for /f "skip=1 tokens=*" %%j in ('wmic logicaldisk where "drivetype=5" get DeviceID') do (
set tempName=%%j
set tCDROM=%tempName:~0,2%
echo %tCDROM%
if exist "%tCDROM%\tmuninst.ini" (set insDriverName="%tCDROM%\InstallationFiles"))
echo %insDriverName%


其中截取字符能够在xp下执行,但是在vista和windows7中取到的为空。
刚学批处理,代码肯定写的比较烂,还请大虾指点。谢谢。

ps:其中考虑到可能有多个光驱,所以判断光驱中是否有某个文件来确定是哪个光驱。


2009-8-12 04:05
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
okjacky
新手上路





积分 8
发帖 8
注册 2009-8-11
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

请高手回复啦,谢谢了。


2009-8-12 04:36
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
okjacky
新手上路





积分 8
发帖 8
注册 2009-8-11
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

怎么只有人看,没有人给点意见啦?高手出来指定指定啦。


2009-8-12 05:07
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
newxso
初级用户

l i u s s


积分 73
发帖 101
注册 2008-9-17
来自 GZ
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

没有环境,所以不能回答。楼主可以在批处理中只保留 wmic logicaldisk where "drivetype=5" get DeviceID 此句(当然下面加上暂停命令 pause)看看结果如何。


2009-8-12 05:32
查看资料  发短消息  网志   编辑帖子  回复  引用回复
okjacky
新手上路





积分 8
发帖 8
注册 2009-8-11
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

如果正常的一个光驱的话就是:
DeviceID
E:_____

譬如如果光驱盘符是E的话,而且这样用for跳过第一行后。取的盘符后面有一串空格,
如”_“所示。所以才有截取字符一说。现在发现在xp下面这个for执行一次,但是在
vista和Windows7下却会多执行一次,但是值是空白。
然后现在我修改代码如下,因为查到网上说延迟扩展变量。
@echo off
setlocal enabledelayedexpansion

set insDriverName=""

for /f "skip=1 tokens=*" %%j in ('wmic logicaldisk where "drivetype=5" get DeviceID') do (
set tempName=%%j
set tCDROM=!tempName:~0,2!
echo !tCDROM!
if exist "!tCDROM!\tmuninst.ini" (set insDriverName="!tCDROM!\InstallationFiles"))
echo !insDriverName!
xp下没问题,但是vista和Windows7下还是有问题。


2009-8-12 05:47
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
newxso
初级用户

l i u s s


积分 73
发帖 101
注册 2008-9-17
来自 GZ
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

怎么多了“_____”符号,在XP下没有此符号。

既然知道有 tmuninst.ini 此文件,直接全盘查找此文件不就可以吗?

for %%a 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 (
if exist %%a:\tmuninst.ini set driver="%%a:\InstallationFiles"
)
echo %driver%
pause


2009-8-12 05:57
查看资料  发短消息  网志   编辑帖子  回复  引用回复
okjacky
新手上路





积分 8
发帖 8
注册 2009-8-11
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

”______“我是用这个表示空格。楼上的好像也可以啦。
但是为什么会出现我那样的问题呢?


2009-8-12 06:09
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
newxso
初级用户

l i u s s


积分 73
发帖 101
注册 2008-9-17
来自 GZ
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

取消 for 语句中的 tokens=*

@echo off
set Driver=
for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype=5" get DeviceID') do (
if exist "%%a\tmuninst.ini" (set "Driver=%%a\InstallationFiles")
)
echo %Driver%
pause


Last edited by newxso on 2009-8-12 at 06:20 ]


2009-8-12 06:19
查看资料  发短消息  网志   编辑帖子  回复  引用回复
okjacky
新手上路





积分 8
发帖 8
注册 2009-8-11
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

谢谢newxso了,看样子我想复杂了。
你这个对于知道文件的,在任意盘都可以咯。不过只是从C-Z都要去if一遍而已。


2009-8-12 06:29
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
kidzgy
中级用户





积分 262
发帖 129
注册 2007-7-11
状态 离线
『第 10 楼』:   使用 LLM 解释/回答一下

Originally posted by newxso at 2009-8-12 06:19 AM:
取消 for 语句中的 tokens=*

@echo off
set Driver=
for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype=5" get DeviceID') do (
if exist "%%a\tmuni ...


运行之后,显示ECHO 处于关闭状态。


2009-8-13 09:04
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
okjacky
新手上路





积分 8
发帖 8
注册 2009-8-11
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

Originally posted by newxso at 2009-8-12 06:19:
取消 for 语句中的 tokens=*

@echo off
set Driver=
for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype=5" get DeviceID') do (
if exist "%%a\tmuni ...


这几天忙去了,不过好像这个在Vista和Windows7下还是不行,的那是那个盘符后面的空格倒是去掉了。谢谢newxso了!我用了你的那个从c检索到z,虽然效率不是很好,但是是个应急的办法。
<img src="images/smilies/face-raspberry.png" align="absmiddle" border="0">


2009-8-17 02:26
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ldr2zjj
初级用户





积分 167
发帖 95
注册 2007-5-6
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

Originally posted by newxso at 2009-8-12 06:19 AM:
取消 for 语句中的 tokens=*

@echo off
set Driver=
for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype=5" get DeviceID') do (
if exist "%%a\tmuni ...

这方法不行啊~~我也想知道怎么可以获得光驱盘符~~


2010-2-7 01:44
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
qwd
初级用户





积分 161
发帖 56
注册 2007-10-1
状态 离线
『第 13 楼』:   使用 LLM 解释/回答一下

wmic LOGICALDISK get Description,DeviceID|findstr/i "cd"
:方法一
@echo off
for /f "tokens=3,4" %%i in ('echo list volume^|diskpart^|findstr /i "CD-ROM"') do echo %%i:\
pause


:方法二
@echo off
for /f "tokens=1,3" %%i in ('wmic LOGICALDISK get Description^,DeviceID^|findstr/i "cd"') do echo %%j
pause

:方法三
@echo off
for /f "delims=" %%i in ('fsutil fsinfo drives^|find/v " "') do (
fsutil fsinfo drivetype %%i|findstr /i "CD-ROM">nul&&echo.%%i
)
pause

Last edited by qwd on 2010-2-8 at 13:12 ]


2010-2-8 12:33
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: