web-dev-qa-db-fra.com

Associer par programme des extensions de fichier à une application sous Windows

Je viens de réinstaller Windows et, lors de la configuration de mon environnement, j'ai constaté que toutes mes associations pour les différents langages de programmation que je modifie dans Notepad ++ ont disparu (naturellement).

Je pense pour l’avenir, ne serait-il pas formidable d’avoir une sorte de fichier de commandes pouvant associer automatiquement une sélection d’extensions de fichiers avec N ++ en un clic de bouton, plutôt que d’attendre que je rencontre toutes ces extensions à ce moment-là passer par le rigmarole de naviguer vers l'exe N ++, etc.

Je ne peux pas faire cela avec l'utilitaire Default Programs fourni avec Windows 7, car il ne fonctionne qu'avec les extensions "rencontrées".

Est-il donc possible d'associer par programme des extensions de fichier à des applications sous Windows?

42
deed02392

Utilisez Ftype & Assoc pour résoudre ce problème (et il est scriptable).

Utilisez Assoc pour obtenir le type de fichier

>Assoc .txt

vous donne:

.txt = txtfile

Ensuite

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

Une fois que vous connaissez le type de fichier, vous pouvez utiliser Ftype pour l'associer à une action.

Cela fonctionnerait pour les fichiers .php (il suffit de les insérer dans un fichier batch)

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

Et vous pouvez copier ces lignes pour ajouter d'autres fichiers texte à votre guise.

60
uSlackr

Voici un script qui a fonctionné pour moi sur 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 ""
}
  • Doit être exécuté dans une fenêtre powershell d’administrateur (élevée).
  • Explorer immédiatement actualisé et a montré de nouvelles icônes de fichier.

https://Gist.github.com/timabell/bc90e0808ec1cda173ca09225a16e194

Merci aux autres réponses pour les informations dont j'avais besoin pour que cela fonctionne.

4
Tim Abell

Au minimum, vous devez créer une clé de registre qui attribue à notepad ++ un identifiant et un chemin, puis une pour chaque extension à enregistrer.

Pour créer l'ID et le chemin (vérifiez que le chemin pointe vers le bon emplacement):

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\""

et continuez à répéter le bit suivant, un pour chaque extension (dans cet exemple, .pl est pour Perl):

[HKEY_CLASSES_ROOT\.pl]
@="notepad_pp"

Enregistrez ce fichier avec l'extension .reg et vous devriez maintenant pouvoir réassocier toutes les extensions en double-cliquant sur ce fichier et en confirmant que vous souhaitez importer les entrées dans le registre.

2
Richard