标题: [系统相关] [已解决]如何用批处理为光盘换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= 来指定图标文件, 示例- [autorun]
- open=autorun.exe
- icon=LABEL.ICO
复制代码
作者: neorobin 时间: 2010-1-4 20:23
- @echo off
- set /p d=请输入要更改图标的驱动器盘符(不要输入冒号):
- set /p icon=请输入新的图标路径(可直接将图标文件拖进此窗口再回车):
- for %%f in (%icon%) do (set icon=%%~f)
- reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%d%\DefaultIcon /ve /t reg_sz /d "%Icon%" /f
- pause
复制代码
作者: neorobin 时间: 2010-1-4 20:36
- @echo off
- set /p d=请输入要更改图标的驱动器盘符(可将驱动器拖入此窗口再回车):
- set /p icon=请输入新的图标路径(可直接将图标文件拖进此窗口再回车, 要恢复默认图标请输入-):
- if "%icon:~0,1%" neq "-" (
- for %%f in (%icon%) do (set icon=%%~f)
- reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%d:~0,1%\DefaultIcon /ve /t reg_sz /d "%Icon%" /f
- ) else reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%d:~0,1%\DefaultIcon /va /f
- 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光驱)
另外,以下是我在网上抄袭别人的批处理,自己稍微加工了一下,只能找到一个光驱,还有一个就找不到了。- for %%i in (S R Q P O N M L K J I H G F E) do (
- set a=%%i
- for /f "delims=" %%j in ('fsutil fsinfo drivetype %%i: ^| find/i "cd-rom"') do set b=%%j
- )
- set lis=%b:~,1%
- if exist %lis%:\nul.ext (goto yy) else (echo.
- echo Windows Registry Editor Version 5.00>>%temp%\wwj.reg
- echo.>>%temp%\wwj.reg
- echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%lis%\DefaultIcon]>>%temp%\wwj.reg
- echo @="C:\\Program Files\\磁盘美化\\H.ico">>%temp%\wwj.reg
- regedit /s %temp%\wwj.reg
- 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 字样的话, 就可以解决楼主的问题了
- 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&ROD_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
- @echo off&setlocal enabledelayedexpansion&chcp 936
- set "icon=C:\Program Files\磁盘美化\H.ico"
- for /f "skip=1 delims=" %%l in ('cmd /c "wmic cdrom get DeviceID, Drive"') do (
- set "ln=%%l"
- if /i "!ln:~0,3!" neq "USB" for /f "tokens=2 delims=: " %%d in ("!ln!") do (
- reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\%%d\DefaultIcon /ve /t reg_sz /d "%Icon%" /f
- )
- )
- 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://bathome.net./) |
Powered by Discuz! 7.2 |