Board logo

标题: [系统相关] [已解决]如何用批处理为光盘换ICO图标? [打印本页]

作者: wwjpl    时间: 2010-1-4 14:54     标题: [已解决]如何用批处理为光盘换ICO图标?

ICO图标我已有了,问题是在我的电脑上有两个光驱,而别人的电脑可能只有一个光驱,并且盘符也不一样,批处理应该怎么写?
请达人知一声,感谢!!!

不好意思,可能是我的问题没有表达清楚,我要的是自动改光驱图标(不包括usb cdrom),ICO图标路径是固定的,都在C:\Program Files\123\文件夹下。
问题的关键是光驱的盘符和光驱的个数在别的电脑上不是固定的,所以批处理我不会写,请家中高人帮忙写一个。

[ 本帖最后由 wwjpl 于 2010-1-12 17:35 编辑 ]
作者: neorobin    时间: 2010-1-4 19:57

这个图标的一种实现是在光盘里有个 autorun.inf 文件, 其中的 icon= 来指定图标文件, 示例
  1. [autorun]
  2. open=autorun.exe
  3. icon=LABEL.ICO
复制代码

作者: neorobin    时间: 2010-1-4 20:23

  1. @echo off
  2. set /p d=请输入要更改图标的驱动器盘符(不要输入冒号):
  3. set /p icon=请输入新的图标路径(可直接将图标文件拖进此窗口再回车):
  4. for %%f in (%icon%) do (set icon=%%~f)
  5. reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%d%\DefaultIcon /ve /t reg_sz /d "%Icon%" /f
  6. pause
复制代码

作者: neorobin    时间: 2010-1-4 20:36

  1. @echo off
  2. set /p d=请输入要更改图标的驱动器盘符(可将驱动器拖入此窗口再回车):
  3. set /p icon=请输入新的图标路径(可直接将图标文件拖进此窗口再回车, 要恢复默认图标请输入-):
  4. if "%icon:~0,1%" neq "-" (
  5. for %%f in (%icon%) do (set icon=%%~f)
  6. reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%d:~0,1%\DefaultIcon /ve /t reg_sz /d "%Icon%" /f
  7. ) else reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%d:~0,1%\DefaultIcon /va /f
  8. pause
复制代码

作者: neorobin    时间: 2010-1-4 23:16     标题: 如果找到一个判断 usb cdrom 盘符的手段, 问题就迎刃而解了

有两个命令不知能否判断 usb cdrom  我暂未查到答案
楼主用 usb cdrom 的话可运行它们看一下结果,  判断它们是否可用
假设 usb cdrom 盘符为 G, WINXP环境下

1.
fsutil fsinfo drivetype g:
得到的信息要是如下的话, 就不能判断 usb cdrom 了, 如果结果中有 可移动 USB 等字样, 那就可利用一下
g: - CD-ROM 驱动器

2.
wmic logicaldisk where drivetype="5" get caption
上行命令显示的信息要是有 G: 那么 wmic 这样也不能判断 usb cdrom 了
作者: wwjpl    时间: 2010-1-5 15:26     标题: 回复 5楼 的帖子

你好,首先感谢你的回答。
我对批处理不是很在行,只能告诉你,我是一块硬盘,五个分区,插上USB后就多了一个光驱和一个U盘,我自带两个光驱,盘符是H和I,J盘是USB CDROM。
下图是用你的两个命令运行后的结果,请你判断,谢谢,麻烦你了。
图片无法上传,第一个命令显示 G: — 是固定磁盘
第二个命令把USB光驱也列出来了。也就是H I J(J是USB光驱)


另外,以下是我在网上抄袭别人的批处理,自己稍微加工了一下,只能找到一个光驱,还有一个就找不到了。
  1. for %%i in (S R Q P O N M L K J I H G F E) do (
  2. set a=%%i
  3. for /f "delims=" %%j in ('fsutil fsinfo drivetype %%i: ^| find/i "cd-rom"') do set b=%%j
  4. )
  5. set lis=%b:~,1%
  6. if exist %lis%:\nul.ext (goto yy) else (echo.
  7. echo Windows Registry Editor Version 5.00>>%temp%\wwj.reg
  8. echo.>>%temp%\wwj.reg
  9. echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%lis%\DefaultIcon]>>%temp%\wwj.reg
  10. echo @="C:\\Program Files\\磁盘美化\\H.ico">>%temp%\wwj.reg
  11. regedit /s %temp%\wwj.reg
  12. del /s /f /q %temp%\wwj.reg
复制代码

作者: wwjpl    时间: 2010-1-6 11:16

我的帖子变成灰色的了,是不是被关了,不懂。
作者: Batcher    时间: 2010-1-6 12:05     标题: 回复 7楼 的帖子

没有锁,你点击过之后就变成灰色了,所有帖子都是这样的。
作者: neorobin    时间: 2010-1-6 12:09

请问楼主下面的结果是怎样的
fsutil fsinfo drivetype j:
作者: wwjpl    时间: 2010-1-6 23:51     标题: 回复 9楼 的帖子

运行了你的"fsutil fsinfo drivetype j:"命令显示为:
“j: - CD-ROM 驱动器”

就算没有办法,我还是感谢你,多谢你费心了。
作者: neorobin    时间: 2010-1-8 17:57     标题: 回复 10楼 的帖子

再问楼主下面会输出什么结果, 有 USB 字样的话, 就可以解决楼主的问题了
  1. wmic cdrom list full | find /i "deviceid"
复制代码

若仍不行, 一个权宜的方案是先用工具禁用 USB, 再将所有的 CDROM 图标更换, 然后启用USB


DeviceID=IDE\CDROMHL-DT-ST_DVD+-RW_GT10N__________________A105____\5&2FFC517B&0&0.0.0
PNPDeviceID=IDE\CDROMHL-DT-ST_DVD+-RW_GT10N__________________A105____\5&2FFC517B&0&0.0.0
DeviceID=SCSI\CDROM&VEN_GENERIC&ampROD_DVD-ROM&REV_1.0\2&12B1DE20&0&000
PNPDeviceID=SCSI\CDROM&VEN_GENERIC&PROD_DVD-ROM&REV_1.0\2&12B1DE20&0&000

[ 本帖最后由 neorobin 于 2010-1-10 16:47 编辑 ]
作者: wwjpl    时间: 2010-1-9 20:55     标题: 回复 11楼 的帖子

你好,运行了命令后没有USB字样,这个命令把USB光驱一样的读成了普通光驱。
我有一个思路,你看可行吗?
因为我是调用USB光驱上的一个批处理文件为光驱做磁盘美化。
可以用批处理先把所有光驱的图标都修改了(批处理文件在6楼,但是需要你的帮助,帮我把6楼的批处理修改成自动替换所有光驱图标),然后再用批处理删除最后一个注册表路径,也就是USB光盘路境。
你看可行吗?
                                                              谢谢!!!
作者: neorobin    时间: 2010-1-10 18:17

  1. @echo off&setlocal enabledelayedexpansion&chcp 936
  2. set "icon=C:\Program Files\磁盘美化\H.ico"
  3. for /f "skip=1 delims=" %%l in ('cmd /c "wmic cdrom get DeviceID, Drive"') do (
  4.   set "ln=%%l"
  5.   if /i "!ln:~0,3!" neq "USB" for /f "tokens=2 delims=: " %%d in ("!ln!") do (
  6.     reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%%d\DefaultIcon /ve /t reg_sz /d "%Icon%" /f
  7.   )
  8. )
  9. pause
复制代码

[ 本帖最后由 neorobin 于 2010-1-10 19:36 编辑 ]
作者: neorobin    时间: 2010-1-10 19:27     标题: 回复 12楼 的帖子

11楼的代码 当时少打了参数 /i , 这样, 应该是不会有输出的, /i 参数已补上, 你再运行 11 楼的代码, 我相信对应 USBCDROM  的设备的输出信息是应该有 USB 字样的, 楼上就是 运用 wmic cdrom 管理命令 达到 楼主目的的完整代码
作者: wwjpl    时间: 2010-1-12 17:32

万分感谢,问题已完全解决。谢谢!!!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2