Eu trabalhava no bash e me beneficiava muito com o alias. Existe alguma maneira equivalente na linha de comando do Windows?
Não quero simular um ambiente Linux, portanto, o cygwin não é uma escolha. Eu só preciso de um atalho para um comando muito longo, como cd a_very_long_path
.
windows
command-line
StarPinkER
fonte
fonte
doskey
(não se deixe enganar pelo nome, não é a antiga chave do MS DOS). Usedoskey /?
para mais informações. Fora isso, receio, esta questão está fora de tópico aqui.Respostas:
Como Christian.K disse em seu comentário, o comando DOSKEY pode ser usado para definir macros, que são análogas aos aliases.
Os parâmetros de macro são referenciados na definição através de
$
posições prefixadas:$1
através$9
e$*
para todos.Consulte a documentação do doskey technet ou digite
doskey /?
ouhelp doskey
na linha de comando para obter mais informações.Mas há sérias limitações nas macros do DOSKEY:
someMacro|findstr '^'
edir|someMacro
falham.for /f %A in ('someMacro') do ...
falhaAs limitações são tão severas que raramente uso macros do DOSKEY.
Obviamente, você pode criar scripts em lote em vez de macros e verifique se os locais dos scripts estão no seu PATH. Mas então você deve prefixar cada script com CALL se desejar usar o script em outro script.
Você pode criar "macros" de variáveis simples para comandos longos e frequentemente usados, mas a sintaxe é um pouco estranha de digitar, pois você precisa expandir a "macro" quando quiser usá-la.
Definição:
Uso (da linha de comando ou script)
fonte
Você pode criar um script em lote e salvá-lo no seu caminho.
No Linux, você criaria um script e o adicionaria à pasta
~/bin
no Windows e poderá fazer o mesmo.Adicione
%USERPROFILE%\bin
à suaPATH
variável de ambiente. Em seguida, salve seus scripts lá.quickcd.cmd
Agora você pode digitar
quickcd
na linha de comando.Também pode ser chamado dentro de um script usando a
call
funçãofonte
Microsoft Windows [Version 10.0.17134.648]
/d
bandeiraCD
subst
Se você realmente está tentando contornar algo assim:
Você pode usar o
subst
comando para mapear esse caminho longo para uma letra de unidade separadaEntão, quando você quiser pular para essa pasta, basta digitar
m:
na linha de comando.A vantagem disso
doskey
é que ele funciona em todos os programas em lote e aparece em qualquer caixa de diálogo de arquivo no Windows.Se você não deseja mais o mapeamento:
fonte
Você pode usar o mesmo truque usado pelo Windows: defina uma variável de ambiente (ou apenas uma variável em um contexto de lote), por exemplo, existe uma variável de ambiente% windir% (e algumas outras).
ou
que faz o mesmo. Então, tudo o que você precisa fazer é:
Depois disso, você pode fazer (de onde você estiver):
ou
ou o que você quiser.
fonte
Ao contrário do Linux, no Windows, os aliases podem receber argumentos e podem receber parâmetros para atribuir esses argumentos em suas definições.
O comando interno interno é doskey , o que significa que não é um arquivo executável externo localizado,
%SystemRoot%\System32
mas é um recurso docmd.exe
qual ele próprio está localizado%SystemRoot%
ou%Windir%
aponta para aC:\Windows
pasta por padrão.Doskey define aliases entre muitas outras coisas. Na terminologia do Windows, os aliases são chamados de macros. Para definir um alias você usa
Aqui
$1
aponta para o primeiro argumento e$*
aponta para todos os argumentos.Eu sempre usaria
$*
aspas duplas$1
se houver apenas um argumento para omitir espaços tratados como caracteres especiais, como separadores (para comandos).Além disso, você pode definir suas macros de
aliasesem um arquivo separado, digamosLinuxAliases.macro
e, em seguida, obtê-lo usandoEle carregará todos os aliases definidos dentro do arquivo apenas para a sessão atual , ou seja, quando você estiver
exit
fora docmd.exe
processo (também conhecido como shell e prompt de comando), eles desaparecerão.Para ter aliases permanentes, você pode digitar o comando completo em algum lugar de uma chave regedit chamada AutoRun ou AutoCommand ou algo semelhante, o que não consigo lembrar agora ao lado da sintaxe interna do arquivo de macro: P
Aqui estão as documentações oficiais e ainda melhores para o comando.
fonte
Eu criei um "alias" como esse especificamente para alterar o diretório. Basicamente, criei um arquivo chamado
fav.bat
e o coloquei em uma pasta no PATH (por exemplo, C: \ MyBatches):Então eu posso pular para qualquer pasta predefinida muito rapidamente. Escrevi um artigo completo sobre essa técnica aqui .
fonte
supondo que você permanecer na mesma unidade, ou seja, sem
D:
seguida,cd D:\somedir\
necessário.No meu caso, C: mantém arquivos do sistema, mas todo o trabalho está em D:
2 partes. primeiro defina alguns diretórios de trabalho, usando um arquivo em lotes.
digamos localprofile.cmd . Você pode ter vários deles, basta executá-los conforme necessário.
agora use outro arquivo de comando para se movimentar, com base nas variáveis de ambiente que você acabou de definir.
wd.cmd
E um pouco de amostra:
O wd por si só deve me mostrar a lista de diretórios marcados. Funciona, mas não sei por que estou recebendo essa mensagem "CD inesperado".
Lotes .cmd regulares
Além da navegação no diretório, você pode criar um foo.cmd em algum lugar do PATH e ele pode atuar como um alias. Lembre-se de que, diferentemente dos shells do Linux / OSX, os arquivos cmd podem afetar as variáveis de ambiente e a sessão, sem precisar originá- los.
Eu tenho um cdbin.cmd para me navegar, por exemplo:
E este é um pseudo-grep grep.cmd
em ação (qualquer que seja o tipo / + 2 / + 10 significa)
D:\home\work\fb440.dumper>grep class *.py | sort /+2 /+10
fonte
Você pode usar o doskey.exe , aqui está um exemplo:
E agora, se você digitar
qcd
, o CD será direcionado para esse caminho.Aqui está uma ajuda com as macro doskey :
Essa é a forma mais simples, aqui está um exemplo:
e se você digitar
word
a saída é:Você pode usar $ 1- $ 9 para parâmetros, aqui está um exemplo:
e se você digitar,
npd
ele abrirá o bloco de notas, mas, se digitarmos,npd test.txt
abrirá o test.txt no bloco de notas .Você pode usar $ * para todos os parâmetros, aqui está outro exemplo:
e se você digitar
prt This is short.
, a saída será:Você pode usar $ T para vários comandos, aqui está um exemplo:
e se você digitar
newline Hello and
, a saída será:Espero que entenda.
fonte