Eu tento fazer um menu personalizado do botão direito que me permite definir o ícone personalizado de uma pasta usando o que folder.ico
eu coloco nessa pasta.
Meu caminho até agora:
Tenha um menu do botão direito do mouse nas pastas que executam um arquivo em lote (feito graças a este tópico ):
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\""
Para o arquivo bat, não consigo fazê-lo funcionar. Temo que isso seja porque não consigo pegar a pasta em que clico com o botão direito do mouse.
Eu baseei meu trabalho neste tópico :
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
Eu gostaria apenas de verificar se o folder.ico existe, editar desktop.ini ou criá-lo inteiramente se não existir (não sei se o bat atual pode fazer isso) e, idealmente (mas não obrigatório) não edite as outras opções que já podem estar lá.
Este código considera:
Que você vai colocar o morcego na pasta onde ele deve estar, onde ele sempre será chamado.
Será executado pela primeira vez (como administrador) para que as entradas necessárias no registro do Windows sejam adicionadas (pelo próprio bat) e apontadas para o local do seu arquivo
File.bat
.As seguintes execuções estarão no menu do botão direito, na pasta de destino
Se um arquivo Folder.ico estiver na pasta de destino, ele será usado, na ausência, outro arquivo de ícone será usado e renomeado para
Folder.ico
Quando
Desktop.ini
existir um arquivo na pasta de destino, serão feitas as edições necessárias para substituir o.ico
arquivo, caso contrário, será criado um novo.1. Execute pela primeira vez como admin e ele adicionará todas as entradas ao registro do Windows.
2. Execute (clique/prompt), sem informar uma pasta válida como parâmetro, e abortará.
3. Informando uma pasta válida, ele verificará se o ícone Folder.ico está presente e o utilizará, caso não exista, utilizará outro que esteja na mesma pasta.
4. Caso a pasta informada não contenha um ícone, ela será abortada sem avisos.
5. Se a pasta tiver um
\Desktop.ini
, ela usará todas as configurações, exceto aquelas relacionadas às opções de ícones.6. Se a pasta não contiver
>\Desktop.ini
, ela criará uma usando a decodificação de um arquivo padrão salvo em si mesmo em strings base64..\Desktop.ini
padrões para pastas que não contêm configuração..\Desktop.ini
:.\Desktop.ini
no bat/code:Nota: Atribua o ícone à pasta, alguns são exibidos imediatamente, outros após alguns segundos, o mesmo parece acontecer também quando alteramos o papel de parede através do registro/linha de comando do Windows ...
Obs.:
CertUtil.exe
já vem com WindowsUma resposta curta, onde a presença de entradas de registro é ignorada, seria ...
Este código considera:
Que as entradas no registro foram feitas e o caminho do arquivo bat está definido no registro corretamente.
Já existe um
Folder.ico
arquivo na pasta de destino.Se
Desktop.ini
não estiver na pasta de destino, uma nova será criada, se existir, as edições relevantes noFolder.ico
arquivo serão feitas no arquivoDesktop.ini
.Set_Folder_Icon.reg
arquivo se parece com:Remove_Set_Folder_Icon.reg
arquivo se parece com:.cmd
em vez.reg
para adicionar todas as entradas no Registro do WindowsAlgumas leituras adicionais:
Se /?
Definir /?
Por /?
Para /F /?
Atributo /?F
Findstr /?
Ir para | Ligar
:Label
Redirecionamento |, <, > 2>, ...
DOS - Manipulação de Strings
Execução condicional || && ...
CertUtil /dostips.com
Diferenças de formato Unicode, UTF, ASCII, ANSI
Codificação ou Decodificação Base64 (MacOS/Windows/Linux)
Como o Windows Command Interpreter cmd.exe analisa scripts
Como: Caracteres de escape, delimitadores e aspas na linha de comando do Windows