CONSOLE.REG

Ouvrir une Console de commandes depuis le menu contextuel d'un volume, d'un dossier, ou d'un fichier.

 

Préambule

On trouve couramment sur le Net une modification du Registre comme le Powertoy Open Command Window Here. Ce tip est également décrit dans ces articles : KB320148, KB816097. Cela consiste à ajouter un item au Menu Contextuel des dossiers permettant de créer une Console ouverte sur le dossier lui-même. Cette disposition évite d'avoir à naviguer manuellement à coups de commandes CD jusqu'au répertoire. Les noms des dossiers peuvent être très longs rendant difficile ce cheminement manuel.

Pour info cette navigation en lignes de commandes sera grandement facilitée par l'utilisation de la complétion (taper la commande, puis appuyer sur la touche TAB). Il existe aussi une possibilité d'affichage des noms courts avec la commande DIR /X.

Il est utile de savoir où se trouve votre dossier "Envoyer vers", vous pourrez y ajouter facilement des raccourcis vers des dossiers ou des programmes.  L'emplacement est différent selon que vous utilisez XP, ou Vista/W7. Faire WIN+R pour ouvrir la boite Exécuter, puis coller les chemins ci-après (avec XP sendto est suffisant) :
   %userprofile%\sendto
        %appdata%\microsoft\windows\sendto

            Astuce à retenir : quel que soit le système (de XP à W7) la commande shell:sendto permet d'ouvrir rapidement le répertoire Sendto...

Nouveauté Vista/Win7

"Ouvrir une fenêtre de commandes ici"
dans le menu contextuel étendu (MAJ+Clic droit)
:

http://fspsa.free.fr/ng/vista-maj-clic-droit-console.gif

Cet item est également disponible en cliquant sur le fond d'une fenêtre ! ==>
MAJ+Clic droit sur le bureau de WIN7 :
http://fspsa.free.fr/ng/win7-maj-clic-droit-console.gif

Je l'ai rêvé, Redmond l'a fait.
Malgré cela mon item Console> dans le menu contextuel reste pratique, même sur Vista et WIN7.
J'ai bien sûr essayé d'implanter la clé concernée de Vista dans XP ==>
La classe fond de dossier s'appelle Background, (en renommant la clé Background, l'item disparaît) :
HKLM\SOFTWARE\Classes\Directory\Background\shell\cmd\command
@=cmd.exe /s /k pushd "%V"
Comme on pouvait s'y attendre Background reste ignoré de XP. Dommage.
La variable %V n'est pas utilisable sur XP (utiliser %L).

 


Résumé

Mise en place d'un nouvel item "Console>" au Menu Contextuel des disques et dossiers. La nouveauté est l'ajout de cet item non seulement aux dossiers, mais aussi pour les fichiers. Ceci permet de ne plus avoir à remonter dans l'arborescence, on peut directement ouvrir une Console depuis l'intérieur un dossier dès lors qu'un fichier existe. C'est vraiment très pratique. Cette facilité a été publiée ici: http://www.hotline-pc.org/dosastuces.htm

Mon projet initial était de simplement exposer cette idée, mais il s'est passé quelque chose que j'apprécie beaucoup : différents intervenants sont venus exposer des critiques constructives, lesquelles ont fortement simplifié le fichier REG originel. Tous les détails sont exposés plus loin. Merci encore à tous ces très aimables internautes pour leurs participations.

Par la suite, en lisant un article sur l'ajout d'items comme "Copier vers un dossier" et "Déplacer vers un dossier" dans les menus contextuels, j'ai eu une Révélation. Et le fichier reg qui permet d'ouvrir une Console de commande à partir de n'importe quel objet (disque, dossier, fichier) tient à présent en trois lignes.

 

Utilisation

Ces vues montrent l'item    Console>             dans les Menus Contextuels d'un dossier, d'un disque, et d'un fichier.

Console> depuis un dossier Console> depuis un disque Console> depuis un fichier

Cela fonctionne aussi avec les fichiers dont l'extension est inconnue.
Remarque : en cas d'extension inconnue, l'action Par défaut est généralement Ouvrir, donnant la possibilité de choisir un logiciel. Mais, pour certaines extensions, l'action par défaut, c'est à dire le premier item en gras du Menu Contextuel se trouve à présent remplacé par notre Console> comme on peut le voir dans la capture ci-après :

 Console> sur un fichier inconnu

Ne pas s'en étonner donc, et on utilisera "Envoyer vers", "Ouvrir avec", ou Notepad si on l'a ajouté, selon ce qu'on veut faire avec le fichier à extension inconnue.
Si on choisit Console>, la Console qui s'ouvre est positionnée sur le répertoire contenant le fichier qui a servi à l'opération. Ça marche.


Console.reg

Nouveau : une autre version, plus courte, est présentée plus bas dans l'article...
Fusionner console.reg au Registre pour ajouter les clés nécessaires.
Contenu du fichier (un fichier.REG est éditable avec Bloc-Notes) :

REGEDIT4

;FOLDER
[HKEY_CLASSES_ROOT\Folder\shell\Console>\Command]

@="cmd.exe /k cd %L&color 1F"


;FICHIERS
[HKEY_CLASSES_ROOT\*\shell\Console>\Command]
@="cmd.exe /k color 1F"

Pour désinstaller en enlevant automatiquement ces clés, fusionner desinstaller-console.reg
Pour fusionner un fichier REG au Registre, double-cliquer le fichier REG, ou faire un clic droit sur le fichier pour afficher son Menu Contextuel, et choisir Fusionner.

Color 1F n'est pas indispensable, cette commande modifie simplement les couleurs de la Console; pour faire joli.
/k est un commutateur indiquant à cmd.exe qu'il faut exécuter l'enchaînement des commandes qui suivent cmd.exe (syntaxe & ou &&)
Plus d'infos sur cmd.exe :
- en tapant cmd /? dans une Console
- Démarrer>Exécuter>cmd /k cmd /?
- Aide et Support (WIN+F1) et utiliser le module de recherche
- Démarrer>Exécuter>hh ntcmds.chm::/ntcmds.htm
- Microsoft Technet

 

Corrections apportées

Quelques modifications ont été apportées par rapport à l'idée initiale de Hotline-pc.
Guillaume Ryder a eu l'amabilité de montrer qu'il n'était pas nécessaire d'utiliser Start et Pushd pour la partie "FICHIERS".
De plus avec un fichier il n'est pas nécessaire d'indiquer le chemin du dossier à cmd.exe avec la variable %L.
Enfin il est inutile de modifier la clé HKLM\SOFTWARE\Classes\*\shell
Référence : If you write keys to a key under HKCR, the system stores the information under HKLM\Software\Classes
PUB :
Guillaume est l'auteur de l'excellent Clavier+

Folder ne m'avait pas paru nécessaire jusqu'à ce que ChrisPra me fasse remarquer que cette clé permettait d'obtenir l'item Command> dans le Menu Contextuel des dossiers spéciaux comme :

Pierre L. m'ayant montré par la suite qu'avec cette modification sur la clé Folder il n'était plus nécessaire de traiter les clés Disk et Directory comme indiqué dans les articles KB320148 et KB816097 vus plus haut, j'ai supprimé les modifications de ces clés.

Suite à ces diverses propositions, dont je remercie chaleureusement les personnes que j'ai citées, le REG est à présent extrêmement simple et efficace.
Mais ce n'est pas fini, continuer à lire jusqu'à la fin...


Variable %L

La variable %L (L pour noms Longs) remplit le même rôle que la variable habituellement utilisée %1. La différence est qu'elle ne nécessite pas la précaution d'être encadrée par des guillemets pour les noms comportant des espaces. Elle passe le chemin du dossier à cmd.exe

Vista

Avec Vista il faut ajouter /D dans la commande, qui devient : cmd.exe /k cd /d %L
Vista et Win7 ont implanté l'item "Ouvrir une fenêtre de commandes ici" dans leurs menus contextuels étendus (MAJ+Clic droit). Ça marche pour les volumes, les dossiers, mais pas les fichiers. Cette absence est compensée par la présence de l'option en faisant MAJ+Clic droit sur le fond d'un dossier, sur le bureau par exemple. Cela fait appel à la notion de Background d'un dossier et ce n'est hélas pas utilisable sur XP (avouerai-je que accéder à la Console en cliquant sur le fond d'une fenêtre était ce que j'avais en tête depuis toujours ?)
La commande utilisée par Wista et Win7 est cmd.exe /s /k pushd "%V"
Cette variable %V n'est pas comprise de XP.
 

 

La Révélation :o)

ou quand Command.reg révèle la présence d'un logiciel buggué...

Étonné de voir que Console> ne fonctionnait plus pour les fichiers, je me suis mis à la recherche de la cause de ce dérangement. Ce fut l'occasion d'une jolie chasse au bug, laquelle a révélé la présence d'un troubleur de fête sur mon système. Voici l'histoire :

Si Console> n'apparaît pas dans le Menu Contextuel des fichiers, vous devriez constater d'autres anomalies avec les Menus Contextuels, comme l'absence d'items habituels. Pour avoir rencontré le problème je peux indiquer une méthode de recherche du coupable.

Commencer par sauvegarder la clé HKEY_CLASSES_ROOT\*
Procéder en faisant un clic droit sur la clé, et Exporter (avec l'extension REG).
On va supprimer des sous-branches de la clé pour faire des tests, le REG servira à revenir à l'état premier. Il n'y a aucun risque. Si de telles manipulations vous inquiètent, lisez ces articles et adoptez Erunt : Sauvegarder le Registre, Réparation du Registre, Erunt

Procéder ensuite par dichotomie, c'est à dire supprimer drastiquement des sous-branches de cette clé. Lorsque Console> réapparaît dans les Menus Contextuels des fichiers, on approche du but. Refusionner le reg de sauvegarde de la clé, puis supprimer au feeling ce qui pourrait être le responsable de l'anomalie.

En ce qui me concerne le trouble était causé par HKEY_CLASSES_ROOT\*\ShellEx\ContextMenuHandlers\FGShellExt
Le programme en rapport avec FGShellExt était Folder Guide (suivre le lien, un utilisateur témoigne du problème dans les commentaires). La version 1.2 ne corrige pas le trouble. La désinstallation permet de retrouver un comportement normal du Menu Contextuel, mais le nettoyage des clés du registre a dû être fait manuellement.

La présence d'un programme dans le menu Contextuel peut entraîner des troubles plus gênants.
ShellExView développé par l'excellent Nir Sofer peut être une bonne aide pour trouver le coupable dans les lignes surlignées dans ShellExView.

 

La Révélation 2 : AllFilesystemObjects

Cet article http://fspsa.free.fr/copier-dans.htm explique comment on utilise la clé HKCR\AllFilesystemObjects pour ajouter des items au menu contextuel de tous les objets.

L'utilisation de la clé HKCR\AllFilesystemObjects\shell s'est révélée très efficace pour l'implantation de notre item Console> dans le menu contextuel de tous les objets. Le reg précédent tient à présent en seulement trois lignes avec consoleallfiles.reg :

REGEDIT4
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Console>\Command]
@="cmd.exe /k color 1F"

Une fois fusionné consoleallfiles.reg au registre (clic droit sur le fichier téléchargé, Fusionner) on peut ouvrir une Console de commandes depuis n'importe quel fichier ou dossier. Pour désinstaller, supprimer la clé HKCR\AllFilesystemObjects\shell\Console>

Ça n'apporte pas grand chose, mais si on veut que l'item soit présent dans le menu contextuel de certains objets comme Poste de Travail, ajouter Folder :

[HKEY_CLASSES_ROOT\Folder\shell\Console>\Command]
@="cmd.exe /k cd %L&color 1F"

On pourra s'amuser à donner des noms différents à l'item, par exemple ConsoleObjects> et ConsoleFolder> pour observer dans quels cas on a l'un ou l'autre item, ou les deux ensemble.

Testé sur XPHOME, XPPRO, Vista, Win7.

 

Suggestions

Bloc-Notes pour tous les fichiers

C'est une proposition qu'on trouve souvent : ajouter le Bloc-Notes dans le Menu Contextuel des fichiers. C'est effectivement très pratique pour examiner le contenu de toutes sortes de fichiers. On applique la méthode à la clé HKCR\*\ pour pouvoir ouvrir ainsi les fichiers dont l'extension n'est pas connue :

[HKEY_CLASSES_ROOT\*\shell\Bloc-Notes>\Command]
@="notepad %1"

Compléter en ajoutant un raccourci notepad.exe dans "Envoyer vers".
Pour ouvrir le dossier SendTo, qui correspond à "Envoyer vers" :
WIN+R, shell:sendto

Vous trouverez d'autres suggestions dans l'article Rightclick options.

Resource Hacker

Ce freeware est très pratique pour inspecter, voire modifier (si autorisé) les ressources cachées dans les exécutables et les dll.
Téléchargez la dernière version chez gratilog.
D'après le site officiel Resource Hacker n'est plus développé, mais l'auteur ayant eu besoin d'accéder à des ressources 64 bits, il a modifié son logiciel, et de ce fait il propose tout de même une nouvelle version 3.5.2.84 compatible 64 bits :
http://www.angusj.com/resourcehacker/reshack_setup.exe

J'avais auparavant expliqué comment ajouter Resource Hacker au menu contextuel des EXE et des DLL, mais la nouvelle version inclut cette amélioration. Vous pourrez vérifier en visualisant avec regedit les clés :
HKEY_CLASSES_ROOT\exefile\shell\
HKEY_CLASSES_ROOT\dllfile\shell\

Resource Hacker pour les fichiers MUI  (Multilingual User Interface)

Les fichiers MUI de localisation linguistique sont situés, pour le français, dans C :\Windows\System32\fr-FR\
Ils adaptent l'interface d'un programme à la langue locale en fournissant les ressources localisées.
C'est ainsi que vous pouvez prendre par exemple connnaissance des codes et messages d'erreur de cmd.exe.mui
Je propose d'ajouter l'item ResourceHacker aux fichiers MUI en prenant pour modèle ce qu'a fait le programme d'installation.
Avec un Windows en 64 bits on obtient ceci :

HKEY_CLASSES_ROOT\.MUI\shell\ResourceHacker\command
@="C:\Program Files (x86)\Resource Hacker\reshacker.exe" "%1"

Program Files (x86) est propre aux systèmes 64 bits ; corrigez selon votre installation.

 

Liens

Lancement automatique d'un exécutable ou d'un script dans une fenêtre de commandes
Modifications de la base de registres en ligne de commande
http://forum.zebulon.fr/editeur-du-registre-gestion-des-cles-et-valeurs-t65599.html
http://www.hotline-pc.org/menucontextuel.htm
http://www.hotline-pc.org/dosastuces.htm
http://fspsa.free.fr/vbscripting.htm
Copier et coller avec la Console CMD
BONUS : la complétion de commandes
Presse-Papier Vers Regedit ou Comment copier une clé et l'ouvrir dans Regedit
TextExec
ShellExView de Nir Sofer
ResScanner de Nir Sofer
http://fspsa.free.fr/copier-dans.htm
Problem caused by adding Copy To and Move To as context menu entries
Add Copy To and Move To to the right-click menu in Vista - The Winhelponline Blog
Manage the context-menu entries for files, folders, drives and Namespace objects
Gratilog : Logiciels français : Programmation : Editeurs hexadécimaux - Editeurs de ressources
Gratilog : Logiciels a nglais : Programmation : Editeurs hexadécimaux - Editeurs de ressources

KB315516 : Comment faire pour ajouter, modifier ou supprimer des sous-clés et valeurs de Registre à l'aide d'un fichier d'inscriptions dans le Registre (.reg)
KB320148 : How to start a command prompt in a folder in Windows Server 2003, Windows XP, and Windows 2000
KB816097 : COMMENT FAIRE : Démarrage d'une invite de commande dans un dossier sous Windows Server 2003

HKEY_CLASSES_ROOT Key
Registering Shell Extensions

 



Bonne utilisation !
Retour au début
Les restes du site
JF (Jean-François)

compteur Free
 Créée le 11/12/2005