2013-03-04 07:28:04 +0000 2013-03-04 07:28:04 +0000
71
71

Jak ustawić alias w wierszu poleceń systemu Windows?

Kiedyś pracowałem na bashu i dużo korzystałem z aliasów. Czy istnieje jakiś równoważny sposób w wierszu poleceń Windows?

Nie chcę symulować środowiska linuksowego, więc cygwin nie wchodzi w grę. Potrzebuję tylko jakiegoś skrótu dla niektórych bardzo długich poleceń, jak cd a_very_long_path.

Odpowiedzi (7)

68
68
68
2013-03-04 12:03:15 +0000

Jak Christian.K powiedział w swoim komentarzu, polecenie DOSKEY może być użyte do zdefiniowania makr, które są analogiczne do aliasów.

doskey macroName=macroDefinition

Do parametrów makra odwołujemy się w definicji poprzez pozycje poprzedzone $: $1 przez $9 oraz $* dla wszystkich.

Zobacz dokumentację technetową doskey , lub wpisz doskey /? lub help doskey z linii poleceń, aby uzyskać więcej informacji.

Ale są poważne ograniczenia z makrami DOSKEY:

  • Makra działają tylko w interaktywnym wierszu poleceń - nie działają w ramach skryptu wsadowego.
  • Nie mogą być używane po obu stronach potoku: Zarówno someMacro|findstr '^' jak i dir|someMacro zawodzą.
  • Nie mogą być używane wewnątrz poleceń FOR /F: for /f %A in ('someMacro') do ... zawodzi

Ograniczenia są tak poważne, że rzadko używam makr DOSKEY.

Oczywiście możesz tworzyć skrypty wsadowe zamiast makr, i upewnić się, że lokalizacje skryptów są w twojej PATH. Ale wtedy musisz poprzedzić każdy skrypt znakiem CALL, jeśli chcesz użyć skryptu w innym skrypcie.

Możesz tworzyć proste zmienne “makra” dla długich i często używanych poleceń, ale składnia jest trochę niewygodna do wpisywania, ponieważ musisz rozwinąć “makro”, gdy chcesz go użyć.

Definicja:

set "cdMe=cd a_very_long_path"

Użycie (z linii poleceń lub skryptu)

%cdMe%
```.
16
16
16
2013-03-04 13:01:49 +0000

Możesz stworzyć skrypt wsadowy i zapisać go w swojej ścieżce.

W systemie Linux wykonasz skrypt i dodasz go do folderu ~/bin w systemie Windows możesz zrobić to samo.

Dodaj %USERPROFILE%\bin do swojej zmiennej środowiskowej PATH. Następnie zapisz tam swoje skrypty.

quickcd.cmd

@echo off
cd /d a_very_long_path

Teraz możesz wpisać quickcd w wierszu poleceń.

Można go również wywołać wewnątrz skryptu za pomocą funkcji call

call quickcd
```.
14
14
14
2014-01-09 06:21:00 +0000

subst

Jeśli naprawdę próbujesz obejść coś takiego:

C:> cd \users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

Możesz użyć polecenia subst, aby zmapować tę długą ścieżkę do osobnej litery dysku

subst m: c:\users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

Następnie, gdy chcesz wskoczyć do tego folderu, możesz po prostu wpisać m: w wierszu poleceń.

Zaletą tej metody w porównaniu z doskey jest to, że działa we wszystkich programach wsadowych i pojawia się w każdym oknie dialogowym plików w systemie Windows.

Jeśli nie chcesz już mapowania:

subst m: /D
```.
10
10
10
2013-03-11 10:14:50 +0000

Możesz użyć tej samej sztuczki, której używa windows: ustaw zmienną środowiskową (lub po prostu zmienną w kontekście wsadowym) na przykład istnieje zmienna środowiskowa %windir% (i kilka innych) Więc możesz zrobić

cd C:\Windows\

lub

cd %windir%

co robi to samo. Więc wszystko, co musisz zrobić, to:

set "mydir=C:\very\long\path\to\my\data\"

po tym możesz zrobić (skądkolwiek jesteś):

dir %mydir%

lub

cd %mydir%

lub cokolwiek chcesz.

1
1
1
2015-09-09 18:42:36 +0000

Stworzyłem taki “alias” specjalnie do zmiany katalogu. W zasadzie stworzyłem plik o nazwie fav.bat i umieściłem go w folderze w PATH (np. C:\MyBatches):

@setlocal
@echo off
set userChoice=%1
rem The format is:
rem call :condition SHORTCUT FOLDER
call :condition web c:\Git\SecThor\SecWeb\App\
call :condition cloud c:\Git\SecThor\SecCloud\dojo.backend\
call :condition good c:\Users\Vitaly\Dropbox\Projects\goodread-friends\
endlocal
popd
GOTO :eof

:condition
rem We do PUSHD twice since endlocal does popd once :|
if "%userChoice%"=="%1" pushd %2 & pushd %2 & echo pushd %2
if "%userChoice%"=="" echo %1 =^> %2
GOTO :eof

Wtedy mogę przeskoczyć do dowolnego predefiniowanego folderu bardzo szybko. Napisałem cały artykuł o tej technice tutaj .

1
1
1
2019-02-18 12:41:06 +0000

Możesz użyć doskey.exe , oto przykład:

doskey qcd=cd [pathname]

A teraz jeśli wpiszesz qcd to program cd przejdzie do tej ścieżki.

Tutaj jest trochę pomocy z makrami doskey:

doskey [macroname]=[command]

To jest najprostsza forma, oto przykład:

doskey word=echo This is a really, really long sentence.

a jeśli wpiszesz word to wyjście jest:

To jest naprawdę, naprawdę długie zdanie.

Można używać $1-$9 dla parametrów, oto przykład:

doskey npd=notepad $1

i jeśli wpiszemy npd to otworzy się notepad, ale jeśli wpiszemy npd test.txt to otworzy się test.txt w notepadzie.

Możesz użyć $ dla wszystkich parametrów, oto inny przykład:

doskey prt=echo $*

i jeśli wpiszemy prt This is short. to wyjście będzie:

To jest skrót.

Możesz użyć $T dla wielu komend, oto przykład:

doskey newline=echo $1 $T echo $2

i jeśli wpiszesz newline Hello and to wyjście będzie:

Hello

i

Mam nadzieję, że zrozumiałeś.

0
0
0
2016-11-16 18:41:42 +0000

zakładając, że pozostajesz na tym samym dysku, tzn. nie potrzebujesz D: to cd D:\somedirzakładając, że pozostajesz na tym samym dysku, tzn. nie potrzebujeszD:` to .

W moim przypadku C: przechowuje pliki systemowe, ale cała praca odbywa się na D:

2 części. najpierw ustawiamy kilka katalogów roboczych, używając pliku wsadowego.

powiedzmy localprofile.cmd. Możesz mieć wiele takich plików, po prostu uruchamiaj je w razie potrzeby.

set wd1=D:\home\work\fb440.dumper
set wd2=D:\home\work\py\tests

Teraz użyj innego pliku poleceń do poruszania się, bazując na zmiennych środowiskowych, które właśnie ustawiłeś.

wd.cmd

echo off
d:
if %1.==. set | findstr wd
if %1==1 cd %wd1%
if %1==2 cd %wd2%
if %1==3 cd %wd3%
if %1==4 cd %wd4%
if %1==5 cd %wd5%
if %1==6 cd %wd6%

I trochę przykładowego użycia:

D:\home\bin>wd 2

D:\home\bin>echo off
D:\home\work\py\tests>wd 1

D:\home\work\py\tests>echo off

wd sam w sobie ma mi pokazać listę katalogów z zakładkami. Działa, ale nie jestem pewien dlaczego dostaję ten komunikat “unexpected cd”.

D:\home\work\fb440.dumper>wd

D:\home\work\fb440.dumper>echo off
wd1=D:\home\work\fb440.dumper
wd2=D:\home\work\py\tests
cd was unexpected at this time.

D:\home\work\fb440.dumper>

Zwykłe partie .cmd

Oprócz nawigacji po katalogach, możesz utworzyć foo.cmd gdzieś na swojej PATH i może on działać podobnie jak alias. Pamiętaj, że w przeciwieństwie do powłok Linux/OSX, pliki cmd mogą wpływać na zmienne środowiskowe i sesję, bez potrzeby zasilania ich.

Mam cdbin.cmd do nawigowania mnie, na przykład:

d:
cd \home\bin

A to jest pseudo-grep grep.cmd

findstr -n %1 %2

w akcji (cokolwiek oznacza sort /+2 /+10)

D:\home\work\fb440.dumper>grep class *.py | sort /+2 /+10

dumper2.py:18:class PrettySafeLoader(yaml.SafeLoader):            
dumper2.py:27:class Comparator(object):                           
dumper2.py:3:class module_settings:                               
linker2.py:5:class module_settings:                               
dumper2.py:65:class DataCompProcessor(object):                    
dumper2.py:69:class DataCompTextRenderer(DataCompProcessor):      
dumper2.py:76:class DataComparator(object):