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