Aliases de comando no prompt de comando?


18

Como posso criar aliases de comando no prompt de comando do Windows, como faria com bash?

Eu descobri doskeyem um tópico do fórum , para que eu possa fazer algo como:

doskey ls=dir /b

... e agora o comando lsfunciona um pouco mais como lsno Unix. (Eu digito com lstanta frequência cmdque nem é engraçado.)

Mas como faço para manter isso entre as sessões? Ele desaparece na próxima vez que eu abrir cmd.exe. (Existe algo como .bash_profile?)


Desculpe a torná-lo offtopic, mas você pode se beneficiar de instalar uma cópia do cygwin e tem todas as ferramentas UNIX em seu palmrest
bubu

Sim, eu gostaria, mas não acho que seja uma opção (e pode ser mais trabalhoso do que vale a pena). Minhas máquinas principais são Linux e OS X - agora estou testando alguns programas no Windows.
Benjamin Oakes

11
não há muito o que fazer. cygwin.com/setup.exe é tudo o que você precisa para instalar. basta baixar e clicar em Avançar. está tudo lá e muito simples. também não há muito para configurar.
bubu

Hum ... bem, eu vou experimentar. A máquina tem um monte de problemas já embora ...;)
Benjamin Oakes

4
a menos que seu MS-DOS seja a versão 6.22 ou menos, você não está executando o DOS. por sua menção de cmd.exe, presumo que você esteja falando sobre o shell de comando básico do WinNT / 2k / XP / etc.
quack quixote

Respostas:


0

O cygwin pode ser usado neste caso, embora essa não seja exatamente uma resposta no tópico.

http://www.cygwin.com/ CygWin
Download: http://cygwin.com/setup.exe

Para acessá-lo facilmente no Windows, você pode colocar c: \ cygwin \ bin no seu caminho.

note que existem alguns comandos que se chocam com o software Windows que não são equivalentes, por exemplo, find (1) vs find.exe - find (1) lista todos os arquivos e subdiretórios, enquanto o find.exe funciona como grep.

outra opção é acessar

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun ou HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun

Verificação de saída

 cmd.exe /? 
para mais detalhes


Hum ... parece que não usa nenhum caminho do Windows ... vou ter que brincar com isso mais tarde, eu acho. (Nunca usei o cygwin a sério antes.) Obrigado por sua ajuda até agora.
Benjamin Oakes

adicionar o caminho do cygwin à variável de ambiente do caminho do Windows permite que você use as ferramentas no ambiente do cygwin no cmd.exe; apenas observe que existem advertências, por exemplo, conflitos do find.exe com o comando find fornecido pelo cygwin.
bubu

Por que o subestimado? Eu simplesmente não tenho ideia.
bubu 31/05

34

É bastante fácil configurar aliases permanentes no prompt de comando do Windows usando o @DOSKEYcomando e a HKCU\Software\Microsoft\Command Processoropção Autorun.

Guia passo a passo rápido:

  1. Crie um novo arquivo em lote, chame-o Alias.bat. Copie / cole o texto abaixo. DICA: eu recomendo criar uma C:\Binpasta para todas as suas ferramentas de linha de comando.
  2. Abra o registro HKEY_CURRENT_USER\Software\Microsoft\Command Processor.
  3. Adicione um Valor da String nomeado Autorune defina o valor como caminho absoluto do Alias.batarquivo.
  4. Feito.

Esse arquivo em lotes será executado toda vez que você abrir um prompt de comando.

Conteúdo do Alias.bat

DOSKEY ls=DIR $* 
DOSKEY cp=COPY $* 
DOSKEY xcp=XCOPY $*
DOSKEY mv=MOVE $* 
DOSKEY clear=CLS
DOSKEY h=DOSKEY /HISTORY
DOSKEY alias=if ".$*." == ".." ( DOSKEY /MACROS ) else ( DOSKEY $* )

Agora você pode digitar alias(ou seja DOSKEY /MACROS) para visualizar a lista atual de aliases / macros.

Para adicionar novos aliases apenas à sessão atual, você pode usar alias name=command.


11
Simples, fácil de atualizar uma vez configurado, eu gosto muito deste!
Urda 31/05

Infelizmente, desde então, parei de usar esse alias, pois o @DOSKEYcomando causa uma falha ao sair do Autodesk Maya 2010. Provavelmente existe uma solução alternativa, por exemplo, verificar se o processo pai é o Maya, mas não passei muito tempo investigando.
Dennis

9

Também meio que off-topic -

Use o PowerShell em vez da cmd.exelinha de comando. A boa notícia é que o PowerShell tem o equivalente ae é .bash_profileexecutado como a cmd.exelinha de comando. Ele vem com um recurso de geração de alias embutido. A má notícia é que existe uma curva de aprendizado se você quiser fazer algo mais complicado do que cmd.execomandos simples .

A propósito, lsé definido como um pseudônimo de dir, pronto para uso.


Por que ninguém nunca me disse para usar o power-shell antes? É muito melhor para tantas coisas.
Andres

3

Há uma entrada de registro na HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRunqual você pode executar um comando ao iniciar um prompt do cmd. Isso inclui um arquivo em lotes.


Convém apontar para HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun, pois outros não terão o mesmo ID de usuário que você.
bubu

@ubu: Ah, é verdade, desculpe. Eu descobri que, pesquisando meu registro, não pensei.
Phoshi

1

Eu sugiro instalar as versões dos comandos diretamente deste link .

Simples, leve, eficiente, etc. Utilizado há um tempo, me faz feliz! Cygwin é um pouco grande para o essencial que eu preciso.


0

Tente colocá-los no autoexec.bat. Não tenho certeza, você terá que tentar. Coloque o autoexec.bat em C: \


Parece não funcionar ...
Benjamin Oakes


0

Serei um necromante por um momento e levantarei esse fio dos mortos. Sua resposta não foi satisfatória para mim. Eu sabia que havia uma maneira melhor. Eu brinquei em criar e incluir arquivos de morcego e tentar descobrir como fazer a bola de espaguete funcionar bem, mas não deu certo. Enfim, de volta ao Google eu fui ..

Também achei isso Como adicionar novos apelidos / comandos do DOS e criar um atalho de teclado para um administrador DOS Funciona muito bem, deve funcionar com 98-7 (sistema de numeração meio engraçado, mas ei, é o Windows). Espero que ajude aqueles que estão neste tópico e aqueles que o Google envia dessa maneira.

Dessa maneira, não é tão simples quanto o Alias, nem o doskey. Depois de configurado, é o mesmo esforço.

Acrescentarei também que partes disso mescladas com a resposta de Dennis Williamson são muito melhores. Você pode ter ambientes de shell para várias versões do mesmo aplicativo, por exemplo, php 4 para seus scripts antigos e php 5 para seu servidor de teste.

De qualquer forma, isso funcionou muito melhor para mim.


0

Resolvendo-o configurando um ambiente PATH

criar arquivo ls.c

digite o seguinte código

int main()
{
system("dir /b");
return 0;
}

em ls.ce compile o arquivo:

$gcc ls.c -o ls

um arquivo executável ls.exe é criado

crie um diretório, nomeie-o como cmdline_tools

$mkdir cmdline_tools

copie ls.exe para o diretório

defina o caminho do diretório no ambiente PATH [copie o local do diretório e cole-o no PATH]

C:/cmdline_tools

Abra o cmd.exe e digite

$ ls

Funciona como comando dir. Você também pode executar outros comandos da mesma maneira. Se não, deixe-nos saber.


0

CMD com aliases / funções de doskey e bashrc (de cygwin> bash), barras também funcionam em cmd (win7 em diante)

  1. Crie atalho para o cmd para usar cmdrc.cmd

    cmd -a "/ k% HOME% \ cmdrc.cmd c: \"

2 C:> cat% HOME% / cmdrc.cmd

:: Override same named builtin windows commands
:: To override these aliases, prefix with '@', eg. @date will not use alias.
@doskey date=c:\cygwin\bin\date.exe $*
@doskey echo=c:\cygwin\bin\echo.exe $*
@doskey mkdir=c:\cygwin\bin\mkdir.exe $*
@doskey rmdir=c:\cygwin\bin\rmdir.exe $*
@doskey find=c:\cygwin\bin\find.exe $*
@doskey time=c:\somedir\time.exe $*

:: using a particular rsync with some options
@doskey rsync=c:\cygwin\bin\rsync.exe -e "ssh -F %HOME%/.ssh/config" $*   

@doskey cp='cp -vi %*'
@doskey ..=cd ..
@doskey ...=cd ../.. 

:: Or use bashrc (bash aliases, bash functions):

:: eg. In bashrc we have "alias cpvi='cp -vi'"

@doskey cpvi=bash -ic "set +u; cpvi $*"  

:: now cpvi is callable from cmd.

:: Install clink_x64 if you want readline editing in cmd
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.