Associar programaticamente extensões de arquivos ao aplicativo no Windows

39

Acabei de reinstalar o Windows recentemente e, na configuração do meu ambiente, notei que todas as minhas associações para as várias linguagens de programação que edito no Notepad ++ passaram (naturalmente).

Estou pensando no futuro, não seria ótimo ter algum tipo de arquivo em lote que pudesse associar automaticamente uma seleção de extensões de arquivo ao N ++ com o clique de um botão, em vez de ter que esperar até encontrar todos os arquivos. essas extensões, em seguida, passam pela ladainha de navegar para o N ++ exe etc.

Eu não posso fazer isso com o utilitário Default Programs que vem com o Windows 7, porque ele só funciona com extensões que foram "encontradas".

Então, é possível associar programaticamente extensões de arquivos ao aplicativo no Windows?

    
por deed02392 31.03.2012 / 15:29

3 respostas

59

Use Ftype & Assoc para corrigir isso (e é scriptable).

Use o Assoc para obter o tipo de arquivo

>Assoc .txt

oferece:

.txt = txtfile

Então

>Ftype txtfile=C:\Program Files (x86)\Notepad++\notepad++.exe %1

Depois de conhecer o tipo de arquivo, você pode usar o Ftype para associá-lo a uma ação.

Isso funcionaria para arquivos .php (basta plop-los em um arquivo de lote)

Assoc .php=phpfile
Ftype phpfile="C:\Program Files (x86)\Notepad++\notepad++.exe" %1

E você pode copiar essas linhas para adicionar outros arquivos baseados em texto como você gostaria.

    
por 31.03.2012 / 20:30
2

No mínimo, você precisa criar uma chave de registro que forneça ao notepad ++ um ID e caminho e, em seguida, um para cada extensão que você deseja registrar para usá-lo.

Para criar o ID e o caminho (verifique se o caminho aponta para o local correto):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\notepad_pp]
@=""

[HKEY_CLASSES_ROOT\notepad_pp\shell]

[HKEY_CLASSES_ROOT\notepad_pp\shell\open]

[HKEY_CLASSES_ROOT\notepad_pp\shell\open\command]
@="\"C:\Program Files (x86)\Notepad++\notepad++.exe\" \"%1\""

e, em seguida, continue repetindo o próximo bit, um para cada extensão (neste exemplo, .pl é para Perl):

[HKEY_CLASSES_ROOT\.pl]
@="notepad_pp"

Salve este arquivo com a extensão .reg e agora você poderá reassociar todas as extensões apenas clicando duas vezes nesse arquivo e confirmando que deseja importar as entradas para o registro.

    
por 31.03.2012 / 19:37
2

Aqui está um script que funcionou para mim no Windows 10

$exts=@("txt","log","csproj","sql","xml","flobble")
echo "## setting up file associations"
foreach ($ext in $exts){
    $extfile=$ext+"file"
    $dotext="." + $ext
    cmd /c assoc $dotext=$extfile
    cmd /c "ftype $extfile=""C:\Program Files (x86)\Notepad++\notepad++.exe"" %1"
    echo ""
}
  • Precisa ser executado em uma janela do PowerShell de administrador.
  • O
  • Explorer foi atualizado imediatamente e mostrou novos ícones de arquivo.

link

Obrigado às outras respostas pela informação que eu precisava para fazer este trabalho.

    
por 05.04.2018 / 21:06