[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

如题,   想用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. )
复制代码


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

自己光驱上没多的光驱,  所以来请教下各位
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

  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:
1

评分人数

TOP

用1楼的代码测试了下, 光驱情况如2楼所述, 输出确实不准确(PC 是计算机名(环境变量COMPUTERNAME的值), 不需要被输出吧):
光驱盘符为:
G:
PC
光驱盘符为:
H:
PC
光驱盘符为:
J:
PC

[ 本帖最后由 neorobin 于 2010-3-29 15:48 编辑 ]

TOP

原帖由 neorobin
'cmd /c "wmic cdrom get Drive"'


  发觉, 不用 cmd /c 外部命令也行呀,   不知道 加个 外部命令, 有什么好处能说下吗?
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

回复 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 编辑 ]

TOP

返回列表