Ajout d'un .exe au chemin par défaut sans ajouter le répertoire

22

Par exemple, je veux ajouter notepad ++ à mon CHEMIN, mais le répertoire contient également uninstall.exeet plusieurs autres fichiers / exécutables et je ne veux pas qu'ils "polluent" mon chemin. Puis-je simplement ajouter celui-ci notepad++.exe?

Louis Rhys
la source

Réponses:

17

Vous pouvez ajouter un script batch à un répertoire qui se trouve sur votre chemin, qui ressemble à ceci:

@echo off

:: Notepad++ execution

if [%1]==[-h] goto :HELP
if [%1]==[--help] goto :HELP
if [%1]==[/?] goto :HELP
goto :START

:START
start "" /i "%ProgramFiles(x86)%\notepad++\notepad++.exe" %*
goto :EOF

:HELP
echo -------------------------------
echo Notepad++ Command Argument Help
echo -------------------------------
echo Usage :
echo.
echo notepad++ [--help] [-multiInst] [-noPlugins] [-lLanguage] [-nLineNumber] [-cColumnNumber] [-xPos] [-yPos] [-nosession] [-notabbar] [-ro] [-systemtray] [-loadingTime] [fullFilePathName]
echo.
echo     --help : This help message
echo     -multiInst : Launch another Notepad++ instance
echo     -noPlugins : Launch Notepad++ without loading any plugin
echo     -l : Launch Notepad++ by applying indicated language to the file to open
echo     -n : Launch Notepad++ by scrolling indicated line on the file to open
echo     -c : Launch Notepad++ on scrolling indicated column on the file to open
echo     -x : Launch Notepad++ by indicating its left side position on the screen
echo     -y : Launch Notepad++ by indicating its top position on the screen
echo     -nosession : Launch Notepad++ without any session
echo     -notabbar : Launch Notepad++ without tabbar
echo     -ro : Launch Notepad++ and make the file to open read only
echo     -systemtray : Launch Notepad++ directly in system tray
echo     -loadingTime : Display Notepad++ loading time
echo     -alwaysOnTop : Make Notepad++ always on top
echo     fullFilePathName : file name to open (absolute or relative path name)
echo.
goto :EOF

:EOF

Vous pouvez le nommer notepad++.cmd. La section d'aide vous permet d'obtenir facilement des informations sur les commutateurs.

J'ai placé tous ces scripts et programmes de ligne de commande dans un répertoire qui est ajouté à %PATH%: C:\Users\Public\Command\ ... et ce répertoire est synchronisé avec tous les ordinateurs et machines virtuelles.

paradroid
la source
8

Créez un fichier de commandes avec un contenu comme celui-ci:

@"C:\Program Files\Git\bin\git.exe" %*

Cela devrait être enregistré en tant que .batfichier, comme git.batdans un répertoire qui se trouve dans votre PATH.

@supprime l'écho de la commande dans le shell appelant. Les citations ""empêchent les espaces blancs d'être interprétés comme des délimiteurs d'argument. %*colle tous les arguments dans le fichier de commandes, dans l'exécutable cité à la place.

Vous pouvez maintenant appeler l'exécutable en utilisant la partie du nom du fichier de commandes auparavant .bat. Dans mon cas, git.

Les références:

Matt Joiner
la source
Pour de nombreux programmes qui raccrocheront CMD jusqu'à ce que vous le fermiez. Vous devez utiliser startpour éviter cela, comme indiqué dans ma réponse.
paradroid
@paradroid: Merci, mais c'est un comportement de terminal standard de rester attaché au parent, sauf si demandé. L'utilisateur devrait faire start gitplutôt que de le faire pour eux. Le script par lots agirait mieux s'il était intégré auexec processus demandé, mais cela n'est pas possible sous Windows: serverfault.com/questions/315077/… . Je pourrais préfixer callmais ce serait pédant et surtout inutile.
Matt Joiner
3

Faites glisser un raccourci vers notepad++.exevers C:\Windows\System32.


Alternativement, comme suggéré par @Synetech inc., Vous pouvez placer vos raccourcis dans un répertoire séparé (par exemple C:\Shortcuts), puis ajouter ce répertoire à %PATH%:

setx PATH "%PATH%;C:\Shortcuts"

Comme certains commentaires l'indiquent, cela ne fonctionne qu'à partir de la boîte de dialogue Exécuter. Pour obtenir le lancement des raccourcis à partir d'une invite de commande, vous devez ajouter l'extension de raccourci (.LNK) à votre variable d'environnement PATHEXT.

setx PATHEXT %pathext%;.LNK

Les références:

Comment démarrer facilement des applications avec la boîte de dialogue Exécuter?

Mateen Ulhaq
la source
1
Il s'agit de la solution préférée (par opposition à un fichier de commandes); créez un raccourci vers celui-ci dans un répertoire (différent) du chemin - ne polluez pas les répertoires de Windows! J'ai un dossier spécialement conçu à cet effet Shortcuts.
Synetech
1
C'est la mauvaise syntaxe pour setx. Vous n'utilisez pas de signe égal et IIRC, vous devez mettre le chemin entier entre guillemets, si le courant %PATH%contient des espaces (ce qu'il fera).
paradroid
Et n'utilise pas de SETXtildes pour les variables au lieu de pourcentages pour éviter de les développer? Je sais qu'un outil de paramétrage env-var le fait…
Synetech
2
Ça ne marche pas. Par défaut (je fais glisser git.exe), "git - Shortcut", le renommer en combinaisons de "git.exe", "git", "git.cmd" etc. n'a aucun effet. Il ne reconnaîtra pas le raccourci.
Matt Joiner
3
Cela ne fonctionne que lors de l'appel à partir de la Run Asboîte de dialogue, cela n'a pas fonctionné à partir de l'invite de commande.
Matt Joiner
1

Créez simplement un lien symbolique à l' aide mklinkd'un dossier du Chemin.

par exemple (dans l'invite de commande de l'administrateur)

mklink "C:\Users\Me\Documents\Paths\np.exe" "C:\Program Files (x86)\Notepad++\notepad++.exe"
Luigi Plinge
la source
0

La clé de registre App Paths fait exactement cela: définissez le chemin sur notepad ++. Exe sur "\ program files \ ..." et vous pourrez le lancer à partir de Start-Run, cmd, ... comme tout exécutable de un répertoire dans% PATH%.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

Référence: /programming/4822400/register-an-exe-so-you-can-run-it-from-any-command-line-in-windows

patraulea
la source
Cela ne le rendra pas exécutable à partir de cmd - uniquement à partir de start-run, ou dans cmd, vous devez le préfixer avec "start" comme dans "start myapp.exe"
Tahir Hassan
L'invite de commande, d'accord, n'a pas la capacité de reconnaître cette variable. PowerShell le reconnaît. Cette solution, plus important encore, s'applique uniquement au répertoire, et donc hors sujet.
Todd Partridge
0

Je n'ai aimé aucune des solutions présentées ici, j'ai donc essayé autre chose.

  1. Installer l' extension de shell de lien (plus d'informations ici )

  2. Créez un dossier quelque part pour stocker tous vos raccourcis comme le suggère Marteen et ajoutez-le à votre %PATH%. J'ai créé C:\Shortcutset utilisé Rapid Environment Editor pour l'ajouter à mon PATH.

  3. Faites un clic droit sur le fichier que vous souhaitez ajouter à votre chemin (dans l'Explorateur) et cliquez sur "Choisir la source du lien"

  4. Cliquez avec le bouton droit sur le dossier que vous venez de créer et cliquez sur Drop As > Symbolink Link.

  5. Renommez le lien symbolink si vous le souhaitez.

C'est ça. Vous devriez maintenant pouvoir accéder à votre programme via la ligne de commande. Si vous venez d'ajouter le nouveau dossier à votre CHEMIN, vous devrez redémarrer cmd.exe ou Cmder ou ConEmu ou tout ce que vous utilisez. Après cela, vous pouvez ajouter de nouveaux programmes sans redémarrer.

mpen
la source