2013-03-04 07:28:04 +0000 2013-03-04 07:28:04 +0000
71
71

¿Cómo establecer un alias en la línea de comandos de Windows?

Solía trabajar en bash y me beneficiaba mucho de los alias. ¿Hay alguna forma equivalente en la línea de comandos de Windows?

No quiero simular un entorno Linux, así que cygwin no es una opción. Sólo necesito algún atajo para algún comando muy largo, como cd a_very_long_path.

Respuestas (7)

68
68
68
2013-03-04 12:03:15 +0000

Como dijo Christian.K en su comentario, el comando DOSKEY puede utilizarse para definir macros, que son análogas a los alias.

doskey macroName=macroDefinition

Los parámetros de las macros se referencian en la definición a través de las posiciones prefijadas $: $1 hasta $9 y $* para todos.

Consulte la documentación de doskey technet , o escriba doskey /? o help doskey desde la línea de comandos para obtener más información.

Pero hay serias limitaciones con las macros de DOSKEY:

  • Las macros sólo funcionan en la línea de comandos interactiva - no funcionan dentro de un script por lotes.
  • No pueden utilizarse a ambos lados de una tubería: Tanto someMacro|findstr '^' como dir|someMacro fallan.
  • No pueden utilizarse dentro de un comando FOR /F: for /f %A in ('someMacro') do ... falla

Las limitaciones son tan severas que rara vez uso macros DOSKEY.

Obviamente puede crear scripts por lotes en lugar de macros, y asegurarse de que las ubicaciones de los scripts están en su PATH. Pero entonces debe preceder cada script con CALL si quiere usar el script dentro de otro script.

Podría crear simples “macros” variables para comandos largos y de uso frecuente, pero la sintaxis es un poco incómoda de escribir, ya que necesita expandir la “macro” cuando quiera usarla.

Definición:

set "cdMe=cd a_very_long_path"

Uso (desde la línea de comandos o script)

%cdMe%
16
16
16
2013-03-04 13:01:49 +0000

Puedes hacer un script por lotes y guardarlo en tu ruta.

En Linux, puedes hacer un script y añadirlo a la carpeta ~/bin En Windows puedes hacer lo mismo.

Añade %USERPROFILE%\bin a tu variable de entorno PATH. Luego guarda tus scripts ahí.

quickcd.cmd

@echo off
cd /d a_very_long_path

Ahora puede escribir quickcd en la línea de comandos.

También se puede llamar dentro de un script usando la función call call quickcd

14
14
14
2014-01-09 06:21:00 +0000

subst

Si realmente quieres evitar algo así:

C:> cd \users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

Puedes usar el comando subst para asignar esa larga ruta a una letra de unidad separada

subst m: c:\users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

Luego, cuando quieras saltar a esa carpeta, puedes simplemente escribir m: en la línea de comandos.

La ventaja de esto sobre doskey es que funciona en todos los programas por lotes, y aparece en cualquier cuadro de diálogo de archivos dentro de Windows.

Si ya no quiere el mapeo:

subst m: /D
10
10
10
2013-03-11 10:14:50 +0000

Podrías usar el mismo truco que usa windows: establecer una variable de entorno (o simplemente una variable en un contexto por lotes) por ejemplo hay una variable de entorno %windir% (y algunas otras) Así que puedes hacer un

cd C:\Windows\

o

cd %windir%

que hace lo mismo. Así que todo, usted tiene que hacer es:

set "mydir=C:\very\long\path\to\my\data\"

después puedes hacer (desde donde estés):

dir %mydir%

o

cd %mydir%

o lo que quieras.

1
1
1
2015-09-09 18:42:36 +0000

He hecho un “alias” así específicamente para cambiar de directorio. Básicamente he creado un archivo llamado fav.bat y lo he puesto en una carpeta del PATH (por ejemplo C:\MyBatches):

@setlocal
@echo off
set userChoice=%1
rem The format is:
rem call :condition SHORTCUT FOLDER
call :condition web c:\Git\SecThor\SecWeb\App\
call :condition cloud c:\Git\SecThor\SecCloud\dojo.backend\
call :condition good c:\Users\Vitaly\Dropbox\Projects\goodread-friends\
endlocal
popd
GOTO :eof

:condition
rem We do PUSHD twice since endlocal does popd once :|
if "%userChoice%"=="%1" pushd %2 & pushd %2 & echo pushd %2
if "%userChoice%"=="" echo %1 =^> %2
GOTO :eof

Así puedo saltar a cualquier carpeta predefinida muy rápidamente. Escribí un artículo completo sobre esa técnica aquí .

1
1
1
2019-02-18 12:41:06 +0000

Puedes usar doskey.exe , aquí hay un ejemplo:

doskey qcd=cd [pathname]

Y ahora si escribes qcd entonces se cd a esa ruta.

Aquí hay algo de ayuda con las macros doskey:

doskey [macroname]=[command]

Esa es la forma más simple, aquí hay un ejemplo:

doskey word=echo This is a really, really long sentence.

y si escribe word la salida es:

Esta es una frase muy, muy larga.

Puedes usar $1-$9 para los parámetros, aquí hay un ejemplo:

doskey npd=notepad $1

y si escribes npd se abrirá notepad pero si escribimos npd test.txt se abrirá test.txt en notepad.

Puedes usar $* para todos los parámetros, aquí hay otro ejemplo:

doskey prt=echo $*

y si escribes prt This is short. entonces la salida será:

Esto es corto.

Puedes usar $T para múltiples comandos, aquí hay un ejemplo:

doskey newline=echo $1 $T echo $2

y si escribes newline Hello and entonces la salida será:

Hola

y

Espero que lo entiendas.

0
0
0
2016-11-16 18:41:42 +0000

Suponiendo que permanezca en la misma unidad, es decir, sin D: entonces cd D:\somedirSuponiendo que permanezca en la misma unidad, es decir, sinD:` entonces necesario.

En mi caso, C: contiene los archivos del sistema, pero todo el trabajo está en D:

2 partes. primero establecer algunos directorios de trabajo, utilizando un archivo por lotes.

digamos localprofile.cmd. Puedes tener varios de estos, sólo ejecútalos según sea necesario.

set wd1=D:\home\work\fb440.dumper
set wd2=D:\home\work\py\tests

ahora use otro archivo de comandos para moverse, basado en las variables de entorno que acaba de establecer.

wd.cmd

echo off
d:
if %1.==. set | findstr wd
if %1==1 cd %wd1%
if %1==2 cd %wd2%
if %1==3 cd %wd3%
if %1==4 cd %wd4%
if %1==5 cd %wd5%
if %1==6 cd %wd6%

Y un poco de ejemplo de uso:

D:\home\bin>wd 2

D:\home\bin>echo off
D:\home\work\py\tests>wd 1

D:\home\work\py\tests>echo off

wd por sí mismo se supone que me muestra la lista de directorios marcados. Funciona, pero no estoy seguro de por qué estoy recibiendo este mensaje de “cd inesperado”.

D:\home\work\fb440.dumper>wd

D:\home\work\fb440.dumper>echo off
wd1=D:\home\work\fb440.dumper
wd2=D:\home\work\py\tests
cd was unexpected at this time.

D:\home\work\fb440.dumper>

Lotes regulares de .cmd

Aparte de la navegación por directorios, puedes crear un foo.cmd en algún lugar de tu PATH y puede actuar mucho como un alias. Recuerda que, a diferencia de los shells de Linux/OSX, los archivos cmd pueden afectar a las variables de entorno y a la sesión, sin necesidad de source.

Tengo un cdbin.cmd para navegar, por ejemplo:

d:
cd \home\bin

Y esto es un pseudo-grep grep.cmd

findstr -n %1 %2

en acción (sea lo que sea que signifique sort /+2 /+10)

D:\home\work\fb440.dumper>grep class *.py | sort /+2 /+10

dumper2.py:18:class PrettySafeLoader(yaml.SafeLoader):            
dumper2.py:27:class Comparator(object):                           
dumper2.py:3:class module_settings:                               
linker2.py:5:class module_settings:                               
dumper2.py:65:class DataCompProcessor(object):                    
dumper2.py:69:class DataCompTextRenderer(DataCompProcessor):      
dumper2.py:76:class DataComparator(object):