Aliasy poleceń w wierszu polecenia?


18

Jak utworzyć aliasy poleceń w wierszu polecenia systemu Windows, tak jak w przypadku bash?

Dowiedziałem się doskeyw wątku na forum , więc mogę zrobić coś takiego:

doskey ls=dir /b

... a teraz polecenie lsdziała trochę bardziej jak lsw Uniksie. (Piszę lstak często cmd, że to nawet nie jest śmieszne).

Ale w jaki sposób mogę to trzymać między sesjami? Znika po następnym otwarciu cmd.exe. (Czy jest coś takiego .bash_profile?)


Przykro mi, że jest to offtopic, ale możesz skorzystać z instalacji kopii cygwina i mieć wszystkie narzędzia unixowe na swoim podparciu dłoni
bubu

Tak, chciałbym, ale nie sądzę, że jest to opcja (i może być więcej pracy niż jest warta). Moje podstawowe komputery to Linux i OS X - właśnie testuję teraz niektóre programy w systemie Windows.
Benjamin Oakes

1
nie ma wiele do zrobienia. cygwin.com/setup.exe to wszystko, co musisz zainstalować. po prostu pobierz i kliknij Dalej. to wszystko jest bardzo proste. nie ma też wiele do skonfigurowania.
bubu

Hmm ... cóż, wypróbuję to. Maszyna ma już jednak wiele problemów ...;)
Benjamin Oakes

4
chyba że twój MS-DOS jest w wersji 6.22 lub mniejszej, nie korzystasz z DOS. przez wzmiankę o cmd.exe zakładam, że mówisz o podstawowej powłoce poleceń WinNT / 2k / XP / etc.
quack quixote

Odpowiedzi:


0

w tym przypadku można użyć cygwina, chociaż nie jest to odpowiedź na konkretny temat.

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

Aby uzyskać do niego łatwy dostęp w systemie Windows, możesz umieścić c: \ cygwin \ bin na swojej ścieżce.

zauważ, że istnieje kilka poleceń, które kolidują z oprogramowaniem Windows, które nie jest równoważne, np. find (1) vs find.exe - find (1) wyświetla wszystkie pliki i podkatalogi, podczas gdy find.exe działa jak grep.

inną opcją jest dostęp

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

sprawdzić

 cmd.exe /? 
po więcej szczegółów


Hmm ... wydaje się, że nie używa żadnej z moich ścieżek Windows ... Myślę, że będę musiał się z tym później pobawić. (Nigdy wcześniej nie traktowałem cygwina poważnie.) Dziękujemy za pomoc do tej pory.
Benjamin Oakes

dodanie ścieżki cygwin do zmiennej środowiskowej ścieżki systemu Windows umożliwia korzystanie z narzędzi w środowisku cygwin w cmd.exe; zwróć uwagę, że istnieją ZASTRZEŻENIA, np. find.exe koliduje z poleceniem find dostarczonym przez cygwin.
bubu

Dlaczego głosowanie? Po prostu nie mam pojęcia.
bubu

34

Ustawienie stałych aliasów w wierszu polecenia systemu Windows jest raczej łatwe przy użyciu @DOSKEYpolecenia i HKCU\Software\Microsoft\Command Processoropcji Autorun.

Szybki przewodnik krok po kroku:

  1. Utwórz nowy plik wsadowy, nazwij go Alias.bat. Skopiuj / wklej poniższy tekst. WSKAZÓWKA: Zalecam utworzenie C:\Binfolderu dla wszystkich narzędzi wiersza poleceń.
  2. Otwórz rejestr HKEY_CURRENT_USER\Software\Microsoft\Command Processor.
  3. Dodaj nazwaną wartość ciąguAutorun i ustaw wartość na bezwzględną ścieżkę do Alias.batpliku.
  4. Gotowy.

Ten plik wsadowy będzie wykonywany przy każdym otwarciu wiersza polecenia.

Zawartość 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 $* )

Teraz możesz wpisać alias(tj. DOSKEY /MACROS), Aby wyświetlić bieżącą listę aliasów / makr.

Aby dodać nowe aliasy dla bieżącej sesji , możesz użyć tylko tego alias name=command.


1
Prosta, łatwa do aktualizacji po instalacji, bardzo mi się podoba!
Urda

Niestety od tego czasu przestałem używać tych aliasów, ponieważ @DOSKEYpolecenie powoduje awarię przy wychodzeniu z programu Autodesk Maya 2010. Prawdopodobnie istnieje obejście, np. Sprawdzanie, czy proces nadrzędny to Maya, jednak nie spędziłem czasu na badaniu.
Dennis

9

Również trochę nie na temat -

Użyj programu PowerShell zamiast cmd.exewiersza polecenia. Dobrą wiadomością jest to, że PowerShell ma odpowiednik .bash_profilei działa podobnie jak cmd.exewiersz poleceń. Ma wbudowaną funkcję generowania aliasu. Zła wiadomość jest taka, że ​​jest trochę krzywej uczenia się, jeśli chcesz robić coś bardziej skomplikowanego niż proste cmd.exepolecenia.

Nawiasem mówiąc, lsjest zdefiniowany jako alias, od dirrazu po wyjęciu z pudełka.


Dlaczego nikt wcześniej nie powiedział mi, żebym używał powłoki mocy? Jest o wiele lepiej dla wielu rzeczy.
Andres

3

Istnieje wpis rejestru, w HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRunktórym można uruchomić polecenie po uruchomieniu monitu cmd. Obejmuje to plik wsadowy.


Możesz wskazać HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun, ponieważ inni nie będą mieli tego samego identyfikatora użytkownika.
bubu

@bubu: Och, bardzo prawda, przepraszam. Przekonałem się, że przeszukując mój rejestr, nie pomyślałem.
Phoshi

1

Sugeruję instalację wersji dos tych poleceń bezpośrednio z tego linku .

Prosty, lekki, wydajny itp. Używam go już od dłuższego czasu, Sprawia mi radość! Cygwin jest trochę duży na niezbędne rzeczy, których potrzebuję.


0

Spróbuj umieścić je w pliku autoexec.bat. Nie jestem pewien, musisz spróbować. Włóż autoexec.bat do C: \


Nie wydaje się działać ...
Benjamin Oakes


0

Przez chwilę będę nekromantą i podniosę ten wątek z martwych. Odpowiedź nie była dla mnie zadowalająca. Wiedziałem, że jest lepszy sposób. Zajmowałem się tworzeniem i dołączaniem plików nietoperzy i próbowaniem wymyślić, jak sprawić, by kulka do spaghetti działała dobrze, ale to nie było dobre. W każdym razie wróciłem do Google. Poszedłem ...

Znalazłem to też. Jak dodać nowy alias / polecenia DOS i utworzyć skrót klawiaturowy dla administratora DOS Działa świetnie, powinien działać na 98-7 (trochę zabawny system numeracji, ale hej, to Windows). Mam nadzieję, że pomoże to tym w tym wątku i tym, którzy Google wysyła w ten sposób.

Ten sposób nie jest tak prosty jak Alias, podobnie jak doskey. Po konfiguracji jest to mniej więcej taki sam wysiłek.

Dodam też, że części tego w połączeniu z odpowiedzią Dennisa Williamsona są znacznie lepsze. Możesz mieć środowiska powłoki dla wielu wersji tej samej aplikacji, powiedz php 4 dla starych skryptów i php 5 dla serwera testowego.

W każdym razie to działało dla mnie znacznie lepiej.


0

Rozwiązanie problemu poprzez ustawienie środowiska PATH

utwórz plik ls.c

wprowadź następujący kod

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

do ls.c i skompiluj plik:

$gcc ls.c -o ls

tworzony jest plik wykonywalny ls.exe

utwórz katalog, nazwij go jako cmdline_tools

$mkdir cmdline_tools

skopiuj ls.exe do katalogu

ustaw ścieżkę katalogu w środowisku PATH [skopiuj lokalizację katalogu i wklej ją w PATH]

C:/cmdline_tools

Otwórz plik cmd.exe i wpisz

$ ls

Działa jako polecenie dir. Możesz zrobić również dla innych poleceń w ten sam sposób. Jeśli nie, daj nam znać.


0

CMD z aliasami / funkcjami z doskey i bashrc (od cygwin> bash), ukośniki do przodu działają również w cmd (od wersji Win7)

  1. Utwórz skrót do cmd, aby użyć 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.