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

Como definir um pseudónimo na Linha de Comando do Windows?

Eu costumava trabalhar em bash e beneficiar muito do pseudónimo. Existe alguma forma equivalente na Linha de Comando do Windows?

Não quero simular um ambiente Linux, por isso o cygwin não é uma escolha. Só preciso de um atalho para um comando muito longo, como cd a_very_long_path.

Respostas (7)

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

Como Christian.K disse no seu comentário, o comando DOSKEY pode ser usado para definir macros, que são análogos a pseudónimos.

doskey macroName=macroDefinition

Os parâmetros das macros são referenciados na definição através de posições $ prefixadas: $1 através de $9 e $* para todos.

Veja a documentação doskey technet documentation , ou digite doskey /? ou help doskey a partir da linha de comando para mais informações.

mas existem sérias limitações com as macros DOSKEY:

  • As macros só funcionam na linha de comando interactiva - não funcionam dentro de um guião de lote. & - Não podem ser utilizadas em nenhum dos lados de um tubo: Tanto someMacro|findstr '^'& como dir|someMacro falham. & - Não podem ser utilizadas dentro de um comando FOR /F: for /f %A in ('someMacro') do ... falham

As limitações são tão severas que raramente uso macros DOSKEY.

Obviamente que pode criar scripts em lote em vez de macros, e certifique-se de que os locais dos scripts estão no seu PATH. Mas depois deve prefixar cada script com CALL se quiser usar o script dentro de outro script.

Pode criar “macros” variáveis simples para comandos longos e frequentemente utilizados, mas a sintaxe é um pouco estranha de digitar, uma vez que precisa de expandir a “macro” quando a quer utilizar.

Definição:

set "cdMe=cd a_very_long_path"

Utilização (a partir de linha de comando ou script)

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

Pode fazer um guião de lote e guardá-lo no seu caminho.

No Linux, pode fazer um script e adicioná-lo à pasta ~/bin no Windows pode fazer o mesmo.

Adicione %USERPROFILE%\bin à sua variável de ambiente PATH. Em seguida, guarde aí os seus scripts.

quickcd.cmd

@echo off
cd /d a_very_long_path

Agora pode digitar quickcd na linha de comando.

Também pode ser chamado dentro de um script usando a função call

call quickcd
```.
14
14
14
2014-01-09 06:21:00 +0000

subst

Se está realmente a tentar contornar algo como isto:

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

Pode usar o comando subst para mapear esse longo caminho para uma letra de unidade separada

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

Depois, quando quiser saltar para essa pasta, pode simplesmente digitar m: na linha de comando.

A vantagem disto sobre doskey é que funciona em todos os programas de lote, e aparece em qualquer caixa de diálogo de ficheiros dentro do Windows.

Se já não quiser o mapeamento:

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

Pode usar o mesmo truque, que as janelas usam: definir uma variável-ambiente (ou apenas uma variável num contexto de lote), por exemplo, existe uma variável-ambiente %-vento% (e algumas outras), por isso pode fazer um

cd C:\Windows\

ou

cd %windir%

que faz o mesmo. Portanto, tudo o que tem de fazer é:

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

depois disso pode fazer (de onde quer que esteja):

dir %mydir%

ou

cd %mydir%

ou o que quiser.

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

Fiz um “pseudónimo” como esse especificamente para mudar de directório. Basicamente, criei um ficheiro chamado fav.bat e coloquei-o numa pasta em PATH (por exemplo 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

Depois posso saltar para qualquer pasta pré-definida muito rapidamente. Escrevi um artigo completo sobre essa técnica aqui .

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

Pode utilizar doskey.exe , aqui está um exemplo:

doskey qcd=cd [pathname]

E agora se escrever qcd então irá cd* para esse caminho.

Aqui está alguma ajuda com doskey* macro’s:

doskey [macroname]=[command]

Esta é a forma mais simples, aqui está um exemplo:

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

e se digitar word a saída é:

& > Esta é uma frase muito, muito longa.

Pode usar $1-$9 para parâmetros, aqui está um exemplo:

doskey npd=notepad $1

e se escrever npd abrirá notepad* mas se escrevermos npd test.txt abrirá test.txt* em notepad*.

Pode usar $* para todos os parâmetros, aqui está outro exemplo:

doskey prt=echo $*

e se digitar prt This is short. então a saída será:

& > Isto é curto.

Pode usar $T para comandos múltiplos, aqui está um exemplo:

doskey newline=echo $1 $T echo $2

e se digitar newline Hello and então a saída será:

e se digitar 0x6& então a saída será:

e se digitar &

Olá & > e

espero que compreenda.

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

assumindo que permanece na mesma unidade, ou seja, sem D: depois cd D:\somedirassumindo que permanece na mesma unidade, ou seja, semD:` depois necessário.

No meu caso, C: detém ficheiros do sistema, mas todo o trabalho está em D:

2 partes. primeiro defina alguns directórios de trabalho, utilizando um ficheiro de lote.

digamos localprofile.cmd*. Pode ter vários destes, basta executá-los conforme necessário.

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

utilize agora outro ficheiro de comando para se deslocar, com base nas variáveis de ambiente que acabou de definir.

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%

E um pouco de uma utilização de amostra:

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 si só é suposto mostrar-me a lista de directórios de marcadores de livros. Funciona, mas não tenho a certeza porque estou a receber esta mensagem 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 .cmd regulares

Além da navegação por directório, pode criar um foo.cmd algures no seu PATH e pode funcionar como um pseudónimo. Lembre-se, ao contrário das shells Linux/OSX, os ficheiros cmd podem afectar as variáveis de ambiente e a sessão, sem necessidade de as fonte.

Tenho um cdbin.cmd* para me navegar, por exemplo:

d:
cd \home\bin

E isto é um pseudo-grep grep.cmd

findstr -n %1 %2

em acção (qualquer tipo /+2 /+10 significa)

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):