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

[系统相关] [已解决]如何用批处理为光盘换ICO图标?

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

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

[ 本帖最后由 wwjpl 于 2010-1-12 17:35 编辑 ]
1

评分人数

    • neorobin: 感谢主动给标题标注[已解决]字样PB + 5

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

TOP

  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
复制代码

TOP

  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
复制代码

TOP

如果找到一个判断 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 了

TOP

回复 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
复制代码

TOP

我的帖子变成灰色的了,是不是被关了,不懂。

TOP

回复 7楼 的帖子

没有锁,你点击过之后就变成灰色了,所有帖子都是这样的。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

请问楼主下面的结果是怎样的
fsutil fsinfo drivetype j:

TOP

回复 9楼 的帖子

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

就算没有办法,我还是感谢你,多谢你费心了。

TOP

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

TOP

回复 11楼 的帖子

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

TOP

  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 编辑 ]
1

评分人数

    • wwjpl: 感谢你帮助我解决了问题PB + 5

TOP

回复 12楼 的帖子

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

TOP

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

TOP

返回列表