我尝试制作一个自定义右键菜单,允许我使用folder.ico
我放入该文件夹的任何内容来设置文件夹的自定义图标。
到目前为止我的方式:
在运行批处理文件的文件夹上有一个右键菜单(感谢这个主题):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\set_folder_icon]
@="Set folder icon"
[HKEY_CLASSES_ROOT\Directory\shell\set_folder_icon\command]
@="\"C:\\path\\set_folder_icon.bat\" \"%1\""
对于 bat 文件,我无法使其工作。我担心这是因为我无法让它拾取我右键单击的文件夹。
我的工作基于这个主题:
rem @echo off
set O=desktop.old
set F=desktop.ini
FOR /R %%I IN (*.ico) DO @(
cd%%~pI
if exist %%~dpnfolder.ico (
echo %%~dpnfolder.ico
attrib -h -s %F%
copy /Y %F% %O%
echo [.ShellClassInfo] > %F%
echo IconResource=folder.ico,0 >> %F%
echo [ViewState] >> %F%
echo Mode= >> %F%
echo Vid= >> %F%
echo FolderType=Generic >> %F%
attrib +h +s %F%
)
)
pause
我只想检查 folder.ico 是否存在,编辑 desktop.ini 或如果它不存在则完全创建它(我不知道当前的 bat 是否可以这样做),理想情况下(但不是强制性的)不编辑可能已经存在的其他选项。
此代码考虑:
你将把蝙蝠放在它应该在的文件夹中,它总是被调用的地方。
将首次运行(以管理员身份),以便添加 Windows 注册表中的必要条目(由 bat 本身)并指向您的
File.bat
.以下执行将是右键单击菜单,在目标文件夹中
如果目标文件夹中有一个 Folder.ico 文件,将使用它,如果没有,将使用另一个图标文件,并重命名为
Folder.ico
当
Desktop.ini
目标文件夹中存在文件时,将进行必要的编辑以替换该.ico
文件,否则将创建一个新文件。1.第一次以管理员身份运行,它会将所有条目添加到 Windows 注册表中。
2.执行(点击/提示),不告知有效文件夹作为参数,会中止。
3.通知一个有效的文件夹,它会检查一个Folder.ico 图标是否存在并使用它,如果它不存在,它将使用同一文件夹中的另一个图标。
4.如果通知文件夹不包含图标,它将在没有警告的情况下中止。
5.如果文件夹有
\Desktop.ini
,它将使用所有设置,除了与图标选项相关的设置。6.如果文件夹不包含
>\Desktop.ini
,它将使用解码一个标准文件来创建一个,它以base64字符串保存在自己的文件中。.\Desktop.ini
默认为不包含配置的文件夹。.\Desktop.ini
:.\Desktop.ini
字符串:注意:将图标分配给文件夹,有些会立即显示,有些会在几秒钟后显示,当我们通过Windows 注册表/命令行更改壁纸时,似乎也会发生同样的情况......
Obs.:Windows
CertUtil.exe
已经自带一个简短的答案,忽略注册表项的存在,将是......
此代码考虑:
注册表中的条目已经建立,并且在注册表中正确设置了bat文件的路径。
目标文件夹中已存在
Folder.ico
文件。如果
Desktop.ini
不在目标文件夹中,将创建一个新文件夹,如果存在,则对Folder.ico
文件的相关编辑将在现有的Desktop.ini
.Set_Folder_Icon.reg
文件如下所示:Remove_Set_Folder_Icon.reg
文件如下所示:.cmd
替代.reg
文件在 Windows 注册表中添加所有条目一些进一步的阅读:
如果 /?
放 /?
为了 /?
对于/F/?
属性 /?F
查找str /?
转到 | 称呼
:Label
重定向 |, <, > 2>, ...
DOS - 字符串操作
条件执行 || && ...
CertUtil /dostips.com
Unicode、UTF、ASCII、ANSI 格式差异
Base64 编码或解码 (MacOS/Windows/Linux)
Windows 命令解释器 cmd.exe 如何解析脚本
操作方法:在 Windows 命令行中转义字符、分隔符和引号