Pour ajouter un script au menu contextuel de Windows (click-droit sur un fichier ou un dossier) il va falloir passer par le registre.
Créez un fichier .reg comme ci-dessous, exécutez-le et les modifications apparaitront instantanément sans avoir besoin de rebooter.
Avant de démarrer, notez que vous pouvez ajouter un script lors d'un click-droit sur :
- Un dossier
- Tous les fichiers
- Un fichier d'un certain type
- Une zone vide dans un dossier (le "directory background")
et qu'il y a une différence assez importante entre :
- Ajouter un script
- Ajouter un sous-menu qui contiendra plusieurs scripts (comme sur ma capture d'écran au dessus)
Juste un script
Ajouter un script sur un dossier
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\NOM_DU_SCRIPT] @="Nom du script" [HKEY_CLASSES_ROOT\Directory\shell\NOM_DU_SCRIPT\command] @="C:\\CHEMIN_DU_SCRIPT\\script.bat \"%1\""Le %1 enverra le chemin complet du dossier sur lequel vous avez cliqué en paramètre.
Ajouter un script sur une zone vide d'un dossier
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\NOM_DU_SCRIPT] @="Nom du script" [HKEY_CLASSES_ROOT\Directory\Background\shell\NOM_DU_SCRIPT\command] @="C:\\CHEMIN_DU_SCRIPT\\script.bat \"%V\""Notez l'utilisation de %V à la place de %1 pour passer le chemin du dossier courant.
Ajouter un script pour tous les fichiers et dossiers
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\NOM_DU_SCRIPT] @="Nom du script" [HKEY_CLASSES_ROOT\*\shell\NOM_DU_SCRIPT\command] @="C:\\CHEMIN_DU_SCRIPT\\script.bat \"%1\""
Ajouter un script sur un certain type de fichier
Ici c'est en 2 temps.Trouvez d'abord le type de fichier auquel vous souhaitez ajouter un script dans HKEY_CLASSES_ROOT Par exemple HKEY_CLASSES_ROOT\.reg
Notez la valeur de la clé, ici regfile, et créer le fichier suivant
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\regfile\shell\NOM_DU_SCRIPT] @="Nom du script" [HKEY_CLASSES_ROOT\regfile\shell\NOM_DU_SCRIPT\command] @="C:\\CHEMIN_DU_SCRIPT\\script.bat \"%1\""
Un sous-menu contenant plusieurs scripts
Je ne vais pas vous remettre tous les cas de figure, vous déduirez sans peine les modification à apporter pour votre utilisation.Ajouter un sous-menu sur les dossiers
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\NOM_DU_MENU] "MUIVerb"="Nom du menu" "SubCommands"="NOM_DU_SCRIPT_1;NOM_DU_SCRIPT_2" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\NOM_DU_SCRIPT_1] @="Nom du script 1" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\NOM_DU_SCRIPT_1\command] @="C:\\CHEMIN_DU_SCRIPT\\script_1.bat \"%1\"" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\NOM_DU_SCRIPT_2] @="Nom du script 2" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\NOM_DU_SCRIPT_2\command] @="C:\\CHEMIN_DU_SCRIPT\\script_2.bat \"%1\""
A noter qu'en voulant aussi ajouter le sous-menu lors d'un click-droit sur le background d'un dossier je pensais m'en tirer simplement en ajoutant la clé
[HKEY_CLASSES_ROOT\Directory\Background\shell\NOM_DU_MENU] "MUIVerb"="Nom du menu" "SubCommands"="NOM_DU_SCRIPT_1;NOM_DU_SCRIPT_2"
mais apparemment on ne peut pas faire pointer 2 clés différentes sur le même SubCommands*, j'ai donc du dupliquer tout le fichier .reg et changer NOM_DU_SCRIPT_1 par NOM_DU_SCRIPT_1_BACK pour le résultat suivant :
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\NOM_DU_MENU] "MUIVerb"="Nom du menu" "SubCommands"="NOM_DU_SCRIPT_1_BACK;NOM_DU_SCRIPT_2_BACK" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\NOM_DU_SCRIPT_1_BACK] @="Nom du script 1" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\NOM_DU_SCRIPT_1_BACK\command] @="C:\\CHEMIN_DU_SCRIPT\\script_1.bat \"%V\"" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\NOM_DU_SCRIPT_2_BACK] @="Nom du script 2" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\NOM_DU_SCRIPT_2_BACK\command] @="C:\\CHEMIN_DU_SCRIPT\\script_2.bat \"%V\""
Pour ajouter une barre de séparation entre 2 scripts ajoutez un pipe.
"SubCommands"="NOM_DU_SCRIPT_1;|;NOM_DU_SCRIPT_2"
*Si quelqu'un a une solution plus élégante je la prend volontiers.
Sources
Superuser
Askvg
Stackoverflow
Version
Windows 7 x64 - SP1