Alias ​​di comando nel prompt dei comandi?


18

Come posso creare alias di comando nel prompt dei comandi di Windows come farei con bash?

Ho scoperto doskeyin un thread del forum , quindi posso fare qualcosa del tipo:

doskey ls=dir /b

... e ora il comando lsagisce un po 'più come lssu Unix. (Scrivo lscosì spesso cmd, non è nemmeno divertente.)

Ma come posso ottenere che rimanga tra le sessioni? Va via la prossima volta che apro cmd.exe. (C'è qualcosa come .bash_profile?)


Mi dispiace renderlo offtopico, ma puoi trarre vantaggio dall'installazione di una copia di Cygwin e avere tutti gli strumenti Unix sul tuo poggiapolsi
bubu

Sì, mi piacerebbe, ma non penso che sia un'opzione (e potrebbe essere più lavoro di quanto valga la pena). Le mie macchine principali sono Linux e OS X - sto solo testando alcuni programmi su Windows in questo momento.
Benjamin Oakes,

1
non c'è molto da fare. cygwin.com/setup.exe è tutto ciò che serve per installare. basta scaricare e fare clic su Avanti. è tutto lì e molto semplice. non c'è molto da configurare neanche.
bubu,

Hrm ... beh, lo proverò. La macchina ha già molti problemi ...;)
Benjamin Oakes,

4
a meno che il tuo MS-DOS non sia la versione 6.22 o meno, non stai eseguendo DOS. con la tua menzione di cmd.exe presumo tu stia parlando della shell di comando di base WinNT / 2k / XP / etc.
Quack Quixote

Risposte:


0

cygwin può essere usato in questo caso, sebbene questa non sia esattamente una risposta sull'argomento.

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

Per accedervi facilmente in Windows, puoi mettere c: \ cygwin \ bin nel tuo percorso.

nota che ci sono alcuni comandi che si scontrano con il software Windows che non è equivalente, ad esempio find (1) vs find.exe - find (1) elenca tutti i file e le sottodirectory mentre find.exe funziona come grep.

un'altra opzione è accedere

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

check-out

 cmd.exe /? 
per ulteriori dettagli


Hrm ... non sembra usare nessuno dei miei percorsi di Windows ... Dovrò giocarci più tardi, credo. (Non hai mai usato Cygwin sul serio prima d'ora.) Grazie per il tuo aiuto finora.
Benjamin Oakes,

l'aggiunta del percorso cygwin nella variabile d'ambiente percorso Windows consente di utilizzare gli strumenti nell'ambiente cygwin in cmd.exe; basta notare che ci sono avvertimenti, ad esempio gli scontri find.exe con il comando find fornito da cygwin.
bubu,

Perché l'undervote? Non ne ho idea.
bubu,

34

È piuttosto semplice impostare alias permanenti nel prompt dei comandi di Windows utilizzando il @DOSKEYcomando e l' HKCU\Software\Microsoft\Command Processoropzione di esecuzione automatica.

Guida rapida dettagliata:

  1. Crea un nuovo file batch, chiamalo Alias.bat. Copia / incolla il testo qui sotto. SUGGERIMENTO: consiglio di creare una C:\Bincartella per tutti gli strumenti della riga di comando.
  2. Aprire il registro HKEY_CURRENT_USER\Software\Microsoft\Command Processor.
  3. Aggiungi un valore stringa denominato Autorune imposta il valore sul percorso assoluto del Alias.batfile.
  4. Fatto.

Questo file batch verrà eseguito ogni volta che si apre un prompt dei comandi.

Contenuti di 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 $* )

Ora puoi digitare alias(cioè DOSKEY /MACROS) per visualizzare l'elenco corrente di alias / macro.

Per aggiungere nuovi alias solo per la sessione corrente è possibile utilizzare alias name=command.


1
Semplice, facile da aggiornare una volta installato, mi piace molto questo!
Urda,

Sfortunatamente da allora ho smesso di usare questo alias, poiché il @DOSKEYcomando provoca un arresto anomalo quando si esce da Autodesk Maya 2010. C'è probabilmente una soluzione, ad esempio verificare se il processo genitore è Maya, tuttavia non ho trascorso del tempo a indagare.
Dennis,

9

Anche una sorta di off-topic -

Utilizzare PowerShell invece della cmd.exeriga di comando. La buona notizia è che PowerShell ha l'equivalente di .bash_profilee funziona esattamente come la cmd.exeriga di comando. Viene fornito con una funzione di generazione di alias integrata. La cattiva notizia è che c'è un po 'di una curva di apprendimento se vuoi fare qualcosa di più complicato dei semplici cmd.execomandi.

A proposito, lsè definito come un alias di dir, immediatamente pronto all'uso.


Perché nessuno mi ha mai detto di usare Power-Shell prima? È molto meglio per così tante cose.
Andres,

3

È presente una voce di registro in HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRuncui è possibile eseguire un comando all'avvio di un prompt cmd. Ciò include un file batch.


Puoi scegliere HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun poiché altri non avranno lo stesso ID utente.
bubu,

@bubu: Oh, molto vero, scusa. Ho scoperto che, cercando nel mio registro, non ho pensato.
Phoshi,

1

Suggerisco di installare le versioni dos di questi comandi direttamente da questo link .

Semplice, leggero, efficiente ecc. Lo uso da un po 'di tempo, mi rende felice! Cygwin è un po 'grande per l'essenziale di cui ho bisogno.


0

Prova a metterli in autoexec.bat. Non sono sicuro, dovrai provarlo. Inserisci autoexec.bat stesso in C: \


Non sembra funzionare ...
Benjamin Oakes,


0

Sarò un negromante per un momento e innalzerò questo filo dai morti. La mia risposta non è stata soddisfacente per me. Sapevo che c'era un modo migliore. Mi sono dilettato a creare e includere file di pipistrelli e cercare di capire come far funzionare bene la palla di spaghetti, ma non è andata bene. Comunque tornando a Google sono andato ..

Ho trovato anche questo Come aggiungere nuovi alias / comandi DOS e creare una scorciatoia da tastiera per un DOS di amministrazione Funziona benissimo, dovrebbe funzionare su 98-7 (un po 'divertente sistema di numerazione ma hey è Windows). Spero che aiuti quelli su questa discussione e quelli che Google invia in questo modo.

In questo modo non è semplice come Alias, e nemmeno Doskey. Una volta installato, si tratta dello stesso sforzo.

Aggiungerò anche che parti di ciò fuse con la risposta di Dennis Williamson sono molto migliori. Puoi avere ambienti shell per più versioni della stessa applicazione, ad esempio php 4 per i tuoi vecchi script e php 5 per il tuo server di prova.

Comunque, questo ha funzionato molto meglio per me.


0

Risolvendolo impostando un ambiente PATH

crea il file ls.c

inserisci il seguente codice

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

in ls.c e compila il file:

$gcc ls.c -o ls

viene creato un file eseguibile ls.exe

crea una directory, chiamala come cmdline_tools

$mkdir cmdline_tools

copia ls.exe nella directory

imposta il percorso della directory nell'ambiente PATH [copia il percorso della directory e incollalo nel PATH]

C:/cmdline_tools

Apri il tuo cmd.exe e digita

$ ls

Funziona come comando dir. Puoi fare anche altri comandi allo stesso modo. Altrimenti fatecelo sapere.


0

CMD con alias / funzioni da doskey e bashrc (da cygwin> bash), anche le barre in avanti funzionano in cmd (win7 in poi)

  1. Crea shorcut in cmd per usare 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.