![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 19:47 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [急]关于如何获得光驱盘符 |
| 可打印版本 2,464 / 12 |
| 第1楼 okjacky | 发表于 2009-08-12 04:05 |
| 新手上路 发帖 8 积分 8 | |
|
[急]关于如何获得光驱盘符 本人想获取电脑的光驱的盘符,写了一段代码如下:
其中截取字符能够在xp下执行,但是在vista和windows7中取到的为空。 刚学批处理,代码肯定写的比较烂,还请大虾指点。谢谢。 ps:其中考虑到可能有多个光驱,所以判断光驱中是否有某个文件来确定是哪个光驱。 |
|
| 第2楼 okjacky | 发表于 2009-08-12 04:36 |
| 新手上路 发帖 8 积分 8 | |
|
请高手回复啦,谢谢了。
|
|
| 第3楼 okjacky | 发表于 2009-08-12 05:07 |
| 新手上路 发帖 8 积分 8 | |
|
怎么只有人看,没有人给点意见啦?高手出来指定指定啦。
|
|
| 第4楼 newxso | 发表于 2009-08-12 05:32 |
| 初级用户 发帖 101 积分 73 来自 GZ | |
|
没有环境,所以不能回答。楼主可以在批处理中只保留 wmic logicaldisk where "drivetype=5" get DeviceID 此句(当然下面加上暂停命令 pause)看看结果如何。
|
|
| 第5楼 okjacky | 发表于 2009-08-12 05:47 |
| 新手上路 发帖 8 积分 8 | |
|
如果正常的一个光驱的话就是:
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下还是有问题。 |
|
| 第6楼 newxso | 发表于 2009-08-12 05:57 |
| 初级用户 发帖 101 积分 73 来自 GZ | |
|
怎么多了“_____”符号,在XP下没有此符号。
既然知道有 tmuninst.ini 此文件,直接全盘查找此文件不就可以吗? |
|
| 第7楼 okjacky | 发表于 2009-08-12 06:09 |
| 新手上路 发帖 8 积分 8 | |
|
”______“我是用这个表示空格。楼上的好像也可以啦。
但是为什么会出现我那样的问题呢? |
|
| 第8楼 newxso | 发表于 2009-08-12 06:19 |
| 初级用户 发帖 101 积分 73 来自 GZ | |
|
取消 for 语句中的 tokens=*
[ Last edited by newxso on 2009-8-12 at 06:20 ] |
|
| 第9楼 okjacky | 发表于 2009-08-12 06:29 |
| 新手上路 发帖 8 积分 8 | |
|
谢谢newxso了,看样子我想复杂了。
你这个对于知道文件的,在任意盘都可以咯。不过只是从C-Z都要去if一遍而已。 |
|
| 第10楼 kidzgy | 发表于 2009-08-13 09:04 |
| 中级用户 发帖 129 积分 262 | |
Originally posted by newxso at 2009-8-12 06:19 AM: |
|
| 第11楼 okjacky | 发表于 2009-08-17 02:26 |
| 新手上路 发帖 8 积分 8 | |
Originally posted by newxso at 2009-8-12 06:19: |
|
| 第12楼 ldr2zjj | 发表于 2010-02-07 01:44 |
| 初级用户 发帖 95 积分 167 | |
Originally posted by newxso at 2009-8-12 06:19 AM: |
|
| 第13楼 qwd | 发表于 2010-02-08 12:33 |
| 初级用户 发帖 56 积分 161 | |
|
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 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |