51 votes

Associer de manière programmée des extensions de fichiers à des applications sous Windows

Je viens de réinstaller Windows et en configurant mon environnement, j'ai remarqué que toutes mes associations pour les différents langages de programmation que j'édite dans Notepad++ ont disparu (naturellement).

Je pense qu'à l'avenir, ce ne serait pas génial d'avoir une sorte de fichier batch qui pourrait associer automatiquement une sélection d'extensions de fichiers à N++ en cliquant sur un bouton, plutôt que d'avoir à attendre de rencontrer toutes ces extensions et de passer par le rigmarole de naviguer vers l'exe de N++ etc.

Je ne peux pas le faire avec le Default Programs fourni avec Windows 7, car il ne fonctionne qu'avec les extensions qui ont été "rencontrées".

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

70voto

micahg Points 1612

Utilisez Ftype & Assoc pour résoudre ce problème (et il est possible d'écrire un script).

Utiliser Assoc pour obtenir le type de fichier

>Assoc .txt

vous donne :

.txt = fichier txt

Dans ce cas

>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 placer dans un fichier batch).

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

Vous pouvez copier ces lignes pour ajouter d'autres fichiers texte comme vous le souhaitez.

8voto

Sanghyun Lee Points 497

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).
  • L'explorateur s'est immédiatement actualisé et a affiché de nouvelles icônes de fichiers.

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

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

4voto

Richard Points 5309

Au minimum, vous devez créer une clé de registre qui donne à notepad++ un identifiant et un chemin d'accès, puis une clé pour chaque extension que vous souhaitez enregistrer pour l'utiliser.

Créer l'identifiant et le chemin (vérifier que le chemin pointe vers le bon endroit) :

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

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

[HKEY_CLASSES_ROOT\.pl]
@="notepad_pp"

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X