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.