找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14805|回复: 4

[系统相关] 批处理WMIC提取光驱怎么做到绝对准确?

[复制链接]
发表于 2010-3-29 11:25:50 | 显示全部楼层 |阅读模式
如题,   想用WMIC 命令, 提取电脑上的, 光驱盘符.   要怎么样才能做到百分之百准确呢?
  1. @echo off&cls&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('wmic cdrom ^|find ":"') do (
  3. set cr=%%i&set cr=!cr: =!&set cr=!cr:_=!&set cr=!cr:(= !&echo.光驱盘符为:
  4. for %%a in (!cr!) do  set cdr=%%a&&echo.!cdr:~-2!|findstr /v [0-9]"
  5. )
复制代码


  这段带码, 机子上, 只有一个光驱, 还是准确的,  但我估计 有两个光驱就会不灵光了汗( ̄口 ̄)!!

自己光驱上没多的光驱,  所以来请教下各位
发表于 2010-3-29 15:28:14 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion&chcp 936>nul
  2. echo 所有光驱盘符如下:
  3. for /f "skip=1 delims=" %%l in ('cmd /c "wmic cdrom get Drive"') do (
  4. echo %%l
  5. )
  6. pause&echo 所有光驱盘符对应设备ID如下:
  7. for /f "skip=1 delims=" %%l in ('cmd /c "wmic cdrom get DeviceID, Drive"') do (
  8. echo %%l
  9. )
  10. pause
复制代码
机器上有一个真实的DVD-RW刻录机, 另外用 daemon tools 建立了两个虚拟光驱, 用上面的代码输出信息如下:
所有光驱盘符如下:
G:
H:
J:
请按任意键继续. . .
所有光驱盘符对应设备ID如下:
IDE\CDROMHL-DT-ST_DVD+-RW_GT10N__________________A105____\5&2FFC517B&0&0.0.0  G:
SCSI\CDROM&VEN_GENERIC&PROD_DVD-ROM&REV_1.0\2&12B1DE20&0&000                  H:
SCSI\CDROM&VEN_GENERIC&PROD_DVD-ROM&REV_1.0\2&12B1DE20&0&010                  J:

评分

参与人数 1PB +5 收起 理由
x9tiancmd + 5 谢谢 解答: 受教

查看全部评分

发表于 2010-3-29 15:37:34 | 显示全部楼层
用1楼的代码测试了下, 光驱情况如2楼所述, 输出确实不准确(PC 是计算机名(环境变量COMPUTERNAME的值), 不需要被输出吧):
光驱盘符为:
G:
PC
光驱盘符为:
H:
PC
光驱盘符为:
J:
PC

[ 本帖最后由 neorobin 于 2010-3-29 15:48 编辑 ]
 楼主| 发表于 2010-3-30 07:03:16 | 显示全部楼层
原帖由 neorobin
'cmd /c "wmic cdrom get Drive"'


  发觉, 不用 cmd /c 外部命令也行呀,   不知道 加个 外部命令, 有什么好处能说下吗?
发表于 2010-3-30 10:22:42 | 显示全部楼层

回复 4L

因为之前应用 WMIC cdrom get 时 用了 DeviceID, Drive 这两个参数, 放在 for 中, 如果直接作为 in 后的命令, 会报错: 无效的 GET 表达式, 当只有 Drive 这一个参数时, 确实是没有必要再使用 cmd /c 的, 去掉 DeviceID 后没有彻底修改代码, 所以留下了 cmd /c, 直接 'wmic cdrom get Drive' 就可以了
for /f "skip=1 delims=" %%l in ('cmd /c "wmic cdrom get DeviceID, Drive"') do ...
for /f "skip=1 delims=" %%l in ('wmic cdrom get Drive') do ...

[ 本帖最后由 neorobin 于 2010-3-30 11:16 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 03:24 , Processed in 0.011356 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表