Alias dans l'invite de commande Windows
J'ai ajouté notepad++.exe
à mon chemin dans les variables d'environnement.
Maintenant dans l'invite de commande, notepad++.exe filename.txt
ouvre la filename.txt
. Mais je veux faire juste np filename.txt
pour ouvrir le fichier.
J'ai essayé d'utiliser DOSKEY np=notepad++
. Mais il ne fait que mettre en avant un bloc-notes++ déjà ouvert sans ouvrir le fichier. Comment puis-je le faire ouvrir le fichier?
Merci.
14 réponses
Pour ajouter à la réponse de josh,
Vous pouvez rendre les alias persistants {[18] } avec les étapes suivantes,
- créer un .bat ou .fichier cmd avec vos commandes
DOSKEY
. - exécutez regedit et allez à
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
-
Ajoutez une entrée de valeur de chaîne avec le nom
AutoRun
et le chemin complet de votre .chauve/.fichier cmd.Par exemple,
%USERPROFILE%\alias.cmd
, Le remplacement du segment initial du chemin par%USERPROFILE%
est utile pour la synchronisation entre plusieurs machine.
De Cette façon, chaque fois que cmd est exécuté, les alias sont chargés.
Pour être complet, voici un modèle pour illustrer le type d'alias que l'on peut trouver utile.
@echo off
:: Temporary system path at cmd startup
set PATH=%PATH%;"C:\Program Files\Sublime Text 2\"
:: Add to path by command
DOSKEY add_python26=set PATH=%PATH%;"C:\Python26\"
DOSKEY add_python33=set PATH=%PATH%;"C:\Python33\"
:: Commands
DOSKEY ls=dir /B
DOSKEY sublime=sublime_text $*
::sublime_text.exe is name of the executable. By adding a temporary entry to system path, we don't have to write the whole directory anymore.
DOSKEY gsp="C:\Program Files (x86)\Sketchpad5\GSP505en.exe"
DOSKEY alias=notepad %USERPROFILE%\Dropbox\alias.cmd
:: Common directories
DOSKEY dropbox=cd "%USERPROFILE%\Dropbox\$*"
DOSKEY research=cd %USERPROFILE%\Dropbox\Research\
- notez que la syntaxe
$*
fonctionne après une chaîne de répertoire ainsi qu'un exécutable qui prend des arguments. Ainsi, dans l'exemple ci-dessus, la commande définie par l'utilisateurdropbox research
points dans le même répertoire queresearch
. - Comme L'a souligné Rivenfall, c'est une bonne idée de inclure une commande qui permet une édition pratique de l'env.fichier cmd. Voir
alias
ci-dessus. Si vous êtes dans une session cmd, entrezcmd
pour redémarrer cmd et recharger l'env.fichier cmd.
Lorsque j'ai cherché sur internet une réponse à la question, les discussions étaient soit axées sur la persistance seulement, soit sur une utilisation de DOSKEY seulement. J'espère que quelqu'un bénéficiera de ces deux aspects étant ensemble ici!
Voici un fichier .reg
pour vous aider à installer env.cmd
. C'est maintenant comme un exemple pour un dossier dropbox comme suggéré ci-dessus.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="%USERPROFILE%\\Dropbox\\dev\\misc\\env.cmd"
, Vous devez passer les paramètres, essayez ceci:
doskey np=notepad++.exe $*
Edit (répondant au commentaire de Romonov) Q: est-il possible que je puisse faire en sorte que l'invite de commande se souvienne pour ne pas avoir à l'exécuter chaque fois que j'ouvre une nouvelle invite de commande?
doskey
est une commande textuelle qui est interprétée par le processeur de commande (par exemple cmd.exe), il ne peut pas savoir Modifier l'état dans un autre processus (en particulier celui qui n'a pas encore commencé).
Personnes qui utilisent doskey
pour configurer leurs environnements shell de commande initiaux, utilisez généralement l'option /K
(souvent via un raccourci) pour exécuter un fichier batch qui effectue toute la configuration commune (comme le titre de la fenêtre, les couleurs, etc.).
cmd.exe /K env.cmd
Env.cmd:
title "Foo Bar"
doskey np=notepad++.exe $*
...
Si vous êtes juste pour quelques commandes simples, vous pouvez suivre ces étapes:
- Créer un dossier appelé C:\Aliases
- Ajouter C:\Aliases à votre chemin (donc tous les fichiers qu'il contient seront trouvés à chaque fois)
- Créer un .bat fichier dans C:\Aliases pour chacun des alias que vous voulez
Peut-être exagéré, mais contrairement à la réponse (sinon excellente) de @Argyll, cela résout le problème de ce chargement à chaque fois.
Par exemple, je avoir un fichier appelé dig2.MTD avec ce qui suit:
@echo off
echo.
dig +noall +answer %1
Votre fichier np aurait juste ce qui suit:
@echo off
echo.
notepad++.exe %1
FWIW, j'ai environ 20 alias (séparés .Fichiers bat) dans mon C:\Aliases répertoire - Je viens de créer de nouveaux si nécessaire. Peut-être pas le plus propre, mais cela fonctionne très bien.
UPDATE : par une excellente suggestion de l'utilisateur @Mav, c'est encore mieux à utiliser %* plutôt que %1, ainsi, vous pouvez passer plusieurs fichiers à la commande, par exemple:
@echo off
echo.
notepad++.exe %*
De cette façon, vous pouvez faire ceci:
np c:\temp\abc.txt c:\temp\def.txt c:\temp\ghi.txt
Et il ouvrira tous les 3 fichiers.
Étant donné que vous avez ajouté notepad++.exe à votre variable PATH, c'est très simple.
Créer un fichier dans votre dossier System32 appelé np.bat
avec le code suivant:
@echo off
call notepad++.exe %*
Le %*
transmet tous les arguments que vous donnez à la commande np
à la commande notepad++.exe
.
Modifier: Vous aurez besoin d'un accès administrateur pour enregistrer des fichiers dans le dossier System32, ce qui était un peu bancal pour moi. Je viens de créer le fichier ailleurs et de le déplacer manuellement vers System32.
Sinon, vous pouvez utiliser cmder
qui vous permet d'ajouter des alias comme linux:
alias subl="C:\Program Files\Sublime Text 3\subl.exe" $*
Vous pouvez également créer un alias.cmd dans votre chemin (par exemple C:\Windows) avec la commande
@echo %2 %3 %4 %5 %6 > %windir%\%1.cmd
Une Fois que vous faites cela, vous pouvez faire quelque chose comme ceci:
alias nameOfYourAlias commands to run
Et après cela, vous pouvez taper dans comman line
nameOfYourAlias
Cela exécutera
commands to run
Mais la meilleure façon pour moi est simplement d'ajouter le chemin d'un programme.
setx PATH "%PATH%;%ProgramFiles%\Sublime Text 3" /M
Et maintenant je cours sublime comme
subl index.html
Alias de Console dans Windows 10
Pour définir un alias de console, utilisez Doskey.exe
pour créer une macro ou utilisez la fonction AddConsoleAlias
.
Doskey
doskey test=cd \a_very_long_path\test
, également, De passer paramètres ajouter $*
à la fin: doskey short=longname $*
AddConsoleAlias
AddConsoleAlias( TEXT("test"),
TEXT("cd \\<a_very_long_path>\\test"),
TEXT("cmd.exe"));
Plus d'informations ici Console Alias, Doskey, les Paramètres
En fait, je vais vous aller mieux et vous laisser sur une petite technique que j'ai utilisé depuis que je l'habitude de programmer sur un Amiga. Sur tout nouveau système que vous utilisez, que ce soit personnel ou professionnel, la première étape consiste à créer deux dossiers: C:\BIN et C:\BATCH. Puis modifiez votre instruction path pour mettre les deux au début dans l'ordre C:\BATCH;C:\BIN; [reste du chemin].
Après avoir fait cela, si vous avez peu d'utilitaires hors du chemin auxquels vous avez besoin d'accéder pour simplement les copier dans le C:\BIN dossier et ils sont dans votre chemin. Pour remplacer temporairement ces affectations, vous pouvez ajouter un fichier batch portant le même nom que l'exécutable C:\BATCH le dossier et le chemin le trouveront avant le fichier dans C:\BIN. Il devrait couvrir tout ce que vous pourriez avoir besoin de faire.
Bien sûr, ces jours-canoniques bonne façon de le faire serait de créer une jonction symbolique vers le fichier, mais le même principe s'applique. Il y a aussi un petit bonus supplémentaire. Si vous voulez mettre quelque chose dans le système qui est en conflit avec quelque chose déjà dans le chemin, le mettre dans le C:\BIN ou C:\Batch folder va simplement préempter l'original-vous permettant de remplacer des choses temporairement ou définitivement, ou de renommer des choses à des noms avec lesquels vous êtes plus à l'aise - sans réellement modifier l'original.
Expansion sur roryhewitt réponse.
Un avantage à l'utilisation .les fichiers cmd sur DOSKEY est que ces "alias" sont alors disponibles dans d'autres shells tels que PowerShell ou WSL (sous-système Windows Pour Linux).
Le seul gotcha avec l'utilisation de ces commandes dans bash est que cela peut prendre un peu plus de configuration puisque vous devrez peut-être faire une manipulation de chemin avant d'appeler votre "alias".
Par exemple, j'ai vs. cmd qui est mon "alias" pour éditer un fichier en Visual Studio
@echo off
if [%1]==[] goto nofiles
start "" "c:\Program Files (x86)\Microsoft Visual Studio
11.0\Common7\IDE\devenv.exe" /edit %1
goto end
:nofiles
start "" "C:\Program Files (x86)\Microsoft Visual Studio
11.0\Common7\IDE\devenv.exe" "[PATH TO MY NORMAL SLN]"
:end
Qui déclenche VS (dans ce cas VS2012 - mais ajuster au goût) en utilisant mon projet "normal" sans fichier donné mais lorsqu'un fichier est donné, il tentera de joindre à un VS en cours d'exécution en ouvrant ce fichier" dans ce projet " plutôt que de démarrer une nouvelle instance de VS.
Pour l'utiliser à partir de bash, j'ajoute ensuite un niveau supplémentaire d'indirection puisque "vs Myfile" ne fonctionnerait pas toujours
alias vs='/usr/bin/run_visual_studio.sh'
Qui ajuste les chemins avant d'appeler le vs. cmd
#!/bin/bash
cmd.exe /C 'c:\Windows\System32\vs.cmd' "`wslpath.sh -w -r $1`"
De cette façon, je peux juste faire
vs SomeFile.txt
Dans une invite de commande, Power Shell ou bash et il s'ouvre dans mon studio visuel en cours d'exécution pour l'édition (ce qui évite à mon cerveau pauvre d'avoir à traiter les commandes VI ou certaines quand je viens d'éditer dans VS pendant des heures).
, Car vous avez déjà notepad++.exe
dans votre chemin. Créez un raccourci dans le dossier nommé np
sur notepad++.exe
.
Tout d'Abord, vous pouvez créer un fichier nommé np.cmd et le mettre dans le dossier qui dans la liste de recherche de chemin. Ensuite, modifiez le np.cmd fichier comme ci-dessous:
@echo off
notepad++.exe
Cette solution n'est pas appropriée, mais sert de but dans certaines occasions.
Créez D'abord un dossier et ajoutez-le à votre chemin système. Accédez à l'exécutable du programme pour lequel vous souhaitez créer un alias. Faites un clic droit et envoyer sur le Bureau (créer un raccourci). Renommez le raccourci en n'importe quel nom d'alias est confortable. Maintenant, prenez le raccourci et placez-le dans votre dossier.
À partir de l'invite d'exécution, vous pouvez taper le nom du raccourci directement et vous pouvez ouvrir le programme pour vous. Mais à partir de l'invite de commande, vous devez ajouter .lnk et appuyez sur entrée, le programme sera ouvert.
Vous voulez créer un alias en tapant simplement:
c:\>alias kgs kubectl get svc
Created alias for kgs=kubectl get svc
Et utilisez l'alias comme suit:
c:\>kgs alfresco-svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alfresco-svc ClusterIP 10.7.249.219 <none> 80/TCP 8d
Ajoutez simplement le fichier alias.bat
suivant à votre chemin. Il crée simplement des fichiers batch supplémentaires dans le même répertoire que lui-même.
@echo off
echo.
for /f "tokens=1,* delims= " %%a in ("%*") do set ALL_BUT_FIRST=%%b
echo @echo off > C:\Development\alias-script\%1.bat
echo echo. >> C:\Development\alias-script\%1.bat
echo %ALL_BUT_FIRST% %%* >> C:\Development\alias-script\%1.bat
echo Created alias for %1=%ALL_BUT_FIRST%
Un exemple du fichier batch créé appelé kgs.bat
est:
@echo off
echo.
kubectl get svc %*
L'utilisation de doskey est la bonne façon de le faire, mais elle se réinitialise lorsque la fenêtre D'invite de commande est fermée. Vous devez ajouter cette ligne à quelque chose comme .équivalent bashrc. J'ai donc fait la suivante:
- Ajouter "C:\Program fichiers (x86) \ Notepad++" à la variable de chemin système
- Faire une copie de notepad++.exe (dans le même dossier, bien sûr) et le renommer en np.exe
Fonctionne très bien!