commands - crear alias en windows 10
Alias en el símbolo del sistema de Windows (14)
He añadido notepad++.exe
a mi ruta en las variables de entorno.
Ahora en el símbolo del sistema, notepad++.exe filename.txt
abre el filename.txt
. Pero quiero hacer solo np filename.txt
para abrir el archivo.
Intenté usar DOSKEY np=notepad++
. Pero solo está poniendo en primer plano un notepad ++ ya abierto sin abrir el archivo. ¿Cómo puedo hacer que abra el archivo?
Gracias.
Alias de consola en Windows 10
Para definir un alias de consola, use Doskey.exe
para crear una macro, o use la función AddConsoleAlias
.
doskey
doskey test=cd /a_very_long_path/test
Para pasar también los parameters agregue $*
al final: doskey short=longname $*
AddConsoleAlias
AddConsoleAlias( TEXT("test"),
TEXT("cd //<a_very_long_path>//test"),
TEXT("cmd.exe"));
Más información aquí Doskey Consola , Doskey , parameters
Además, puede crear un alias.cmd en su ruta (por ejemplo, C: / Windows) con el comando
@echo %2 %3 %4 %5 %6 > %windir%/%1.cmd
Una vez que haces eso, puedes hacer algo como esto:
alias nameOfYourAlias commands to run
Y después de eso puedes escribir en línea de comando.
nameOfYourAlias
esto ejecutará
commands to run
PERO la mejor manera para mí es simplemente agregar la ruta de un programa.
setx PATH "%PATH%;%ProgramFiles%/Sublime Text 3" /M
Y ahora corro sublime como
subl index.html
Alternativamente, puedes usar cmder
que te permite agregar alias como linux:
alias subl="C:/Program Files/Sublime Text 3/subl.exe" $*
Ampliando en respuesta roryhewitt .
Una ventaja de usar archivos .cmd sobre DOSKEY es que estos "alias" están disponibles en otros shells como PowerShell o WSL (subsistema de Windows para Linux).
El único problema con el uso de estos comandos en bash es que puede requerir un poco más de configuración, ya que es posible que tenga que realizar alguna manipulación de ruta antes de llamar a su "alias".
por ejemplo, tengo vs.cmd, que es mi "alias" para editar un archivo en Visual Studio
c:/>alias kgs kubectl get svc
Created alias for kgs=kubectl get svc
Lo que activa VS (en este caso VS2012, pero se ajusta al gusto) usando mi proyecto "normal" sin un archivo dado, pero cuando se da un archivo, intentará adjuntarlo a un VS en ejecución que abre ese archivo "dentro de ese proyecto" en lugar de iniciar un Nueva instancia de VS.
Para usar esto desde bash, a continuación, agrego un nivel extra de indirección ya que "vs Myfile" no siempre funcionaría
c:/>kgs alfresco-svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alfresco-svc ClusterIP 10.7.249.219 <none> 80/TCP 8d
Que ajusta las rutas antes de llamar al vs.cmd.
@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%
Así que de esta manera sólo puedo hacer
@echo off
echo.
kubectl get svc %*
Ya sea en un indicador de comandos, Power Shell o bash, se abre en mi Visual Studio para su edición (lo que evita que mi pobre cerebro tenga que lidiar con los comandos VI o algo así cuando acabo de editar en VS durante horas).
Dado que agregó notepad ++. Exe a su variable PATH, es muy simple. Cree un archivo en su carpeta System32 llamado np.bat
con el siguiente código:
@echo off
call notepad++.exe %*
El %*
pasa a lo largo de todos los argumentos que le da el comando np
comando notepad++.exe
.
EDITAR: Necesitará acceso de administrador para guardar archivos en la carpeta System32, lo cual fue un poco extraño para mí. Acabo de crear el archivo en otro lugar y lo moví a System32 manualmente.
De hecho, te iré mejor y te contaré una pequeña técnica que he usado desde que solía programar en un Amiga. En cualquier sistema nuevo que utilice, ya sea personal o profesional, el primer paso es crear dos carpetas: C: / BIN y C: / BATCH. Luego modifique su declaración de ruta para poner ambas al principio en el orden C: / BATCH; C: / BIN; [resto de ruta].
Una vez hecho esto, si tiene pocas utilidades fuera de la vía a las que necesita acceso, simplemente cópielos en la carpeta C: / BIN y estarán en su ruta. Para anular temporalmente estas asignaciones, puede agregar un archivo por lotes con el mismo nombre que el ejecutable a la carpeta C: / BATCH y la ruta lo encontrará antes del archivo en C: / BIN. Debe cubrir todo lo que pueda necesitar hacer.
Por supuesto, en estos días, la forma correcta canónica de hacer esto sería crear una unión simbólica al archivo, pero se aplica el mismo principio. También hay una pequeña bonificación adicional. Si desea poner algo en el sistema que esté en conflicto con algo que ya se encuentra en la ruta, al colocarlo en la carpeta C: / BIN o C: / Batch simplemente se anticipará al original, lo que le permitirá anular las cosas de forma temporal o permanente. o cambie el nombre de las cosas por nombres con los que se sienta más cómodo, sin alterar realmente el original.
Desea crear un alias simplemente escribiendo:
@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
Y usa el alias como sigue:
alias vs=''/usr/bin/run_visual_studio.sh''
Simplemente agregue el siguiente archivo alias.bat
a su ruta. Simplemente crea archivos por lotes adicionales en el mismo directorio que él mismo.
#!/bin/bash
cmd.exe /C ''c:/Windows/System32/vs.cmd'' "`wslpath.sh -w -r $1`"
Un ejemplo del archivo por lotes que este creado llamado kgs.bat
es:
vs SomeFile.txt
Esta solución no es adecuada, pero tiene un propósito en algunas ocasiones.
Primero crea una carpeta y agrégala a la ruta de tu sistema. Vaya al archivo ejecutable de cualquier programa para el que desee crear alias. Haga clic derecho y enviar a Escritorio (Crear acceso directo). Cambie el nombre del acceso directo a cualquier nombre de alias que sea cómodo. Ahora, toma el atajo y colócalo en tu carpeta.
Desde el indicador de ejecución, puede escribir el nombre del acceso directo directamente y puede tener el programa abierto para usted. Pero desde el símbolo del sistema, debe agregar .lnk y presionar enter, el programa se abrirá.
Necesitas pasar los parámetros, prueba esto:
doskey np=notepad++.exe $*
Editar (respondiendo al comentario de Romonov) P: ¿Hay alguna forma de hacer que el indicador de comando recuerde que no tengo que ejecutar esto cada vez que abro un nuevo indicador de comando?
doskey
es un comando textual que es interpretado por el procesador de comandos (por ejemplo, cmd.exe), no puede saber modificar el estado en otro proceso (especialmente uno que aún no se ha iniciado).
Las personas que usan doskey
para configurar sus entornos iniciales de shell de comandos generalmente usan la opción /K
(a menudo a través de un acceso directo) para ejecutar un archivo por lotes que realiza toda la configuración común (título, colores, etc. de la ventana de conjunto).
cmd.exe /K env.cmd
env.cmd:
title "Foo Bar"
doskey np=notepad++.exe $*
...
Para agregar a la respuesta de Josh,
puede hacer que los alias sean persistentes con los siguientes pasos,
- Cree un archivo .bat o .cmd con sus comandos
DOSKEY
. - Ejecute regedit y vaya a
HKEY_CURRENT_USER/Software/Microsoft/Command Processor
Agregue la entrada String Value con el nombre
AutoRun
y la ruta completa de su archivo .bat / .cmd.Por ejemplo,
%USERPROFILE%/alias.cmd
, reemplazar el segmento inicial de la ruta con%USERPROFILE%
es útil para la sincronización entre varias máquinas.
De esta manera, cada vez que se ejecuta cmd, se cargan los alias.
Para completar, aquí hay una plantilla para ilustrar el tipo de alias que pueden ser útiles.
@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/
- Tenga en cuenta que la sintaxis de
$*
funciona después de una cadena de directorio, así como un ejecutable que toma argumentos. Por lo tanto, en el ejemplo anterior, el comando definido por el usuariodropbox research
apunta al mismo directorio queresearch
. - Como señaló Rivenfall, es una buena idea incluir un comando que permita la edición conveniente del archivo
alias.cmd
. Veralias
arriba. Si está en una sesión de cmd, ingresecmd
para reiniciar cmd y vuelva a cargar el archivoalias.cmd
.
Cuando busqué en Internet una respuesta a la pregunta, de alguna manera las discusiones se centraron solo en la persistencia o en algún uso de DOSKEY. ¡Espero que alguien se beneficie de estos dos aspectos juntos!
Aquí hay un archivo .reg
para ayudarlo a instalar el alias.cmd
. Se establece ahora como un ejemplo para una carpeta de Dropbox como se sugirió anteriormente.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER/Software/Microsoft/Command Processor]
"AutoRun"="%USERPROFILE%//alias.cmd"
Primero, puede crear un archivo llamado np.cmd y colocarlo en la carpeta que se encuentra en la lista de búsqueda de PATH. Luego, edite el archivo np.cmd como se muestra a continuación:
@echo off
notepad++.exe
Si solo vas por algunos comandos simples, puedes seguir estos pasos:
- Crea una carpeta llamada C: / Alias
- Agregue C: / Alias a su ruta (para que se encuentren todos los archivos que contiene)
- Cree un archivo .bat en C: / Alias para cada uno de los alias que desee
Tal vez exagerar, pero a diferencia de la respuesta (por lo demás excelente) de @Argyll, esto resuelve el problema de esta carga cada vez.
Por ejemplo, tengo un archivo llamado dig2.bat con lo siguiente:
@echo off
echo.
dig +noall +answer %1
Tu archivo np solo tendría lo siguiente:
@echo off
echo.
notepad++.exe %1
FWIW, tengo alrededor de 20 alias (archivos .bat separados) en mi directorio C: / Aliases. Solo creo nuevos cuando sea necesario. Tal vez no sea lo mejor, pero funciona bien.
ACTUALIZACIÓN : Según una excelente sugerencia del usuario @Mav, es incluso mejor usar % * en lugar de % 1 , para que pueda pasar varios archivos al comando, por ejemplo:
@echo off
echo.
notepad++.exe %*
De esa manera, podrías hacer esto:
np c:/temp/abc.txt c:/temp/def.txt c:/temp/ghi.txt
y abrirá los 3 archivos.
Usar doskey es la forma correcta de hacer esto, pero se restablece cuando se cierra la ventana del símbolo del sistema. Necesitas agregar esa línea a algo como .bashrc equivalente. Así que hice lo siguiente:
- Agregue "C: / Archivos de programa (x86) / Notepad ++" a la variable de ruta del sistema
- Haga una copia de notepad ++. Exe (en la misma carpeta, por supuesto) y cambie su nombre a np.exe
¡Funciona bien!
Ya que tienes notepad++.exe
en tu camino. Cree un acceso directo en esa carpeta llamada np
y np
a notepad++.exe
.