Doskey dla polecenia złożonego

32

Doskey działa w nowoczesnych wersjach systemu Windows do ustawiania aliasów dla pojedynczych poleceń, np doskey foo=bar.

Występuje niewielki problem z próbą użycia go do komend złożonych, takich jak doskey foo=bar & bazinterpretacja tego jako (doskey foo=bar) & baz. Oczywistą poprawką byłoby dodanie jawnych nawiasów, doskey foo=(bar & baz)ale z jakiegoś powodu to nie działa i doskey foo="bar & baz"też nie działa.

Czy jest na to jakiś sposób?

rwallace
źródło

Odpowiedzi:

39

Escape the ampersand.

foo=bar ^& baz
Wstrzymano do odwołania.
źródło
19

Użyj $Tdo oddzielenia poleceń:

doskey foo = pasek $ T baz
doskey cpdel = skopiuj 1 $ 2 $ T del $ 1

z doskey /?:

$ T Separator poleceń. Umożliwia wiele poleceń w makrze.
John T.
źródło
7

Aby (nieco) dodać do odpowiedzi Dennisa Williamsona , możesz także uciec od znaku potoku, aby wydać polecenie! Na przykład chciałem polecenia, które kopiuje rzeczy do schowka. Ze względu na sposób, w jaki COPYto zinterpretuje, musisz wykonać głupkowato wyglądające polecenie , aby faktycznie skopiować określony tekst bez poprzedzania go nową linią.

Aby zdefiniować makro do kopiowania do schowka, możesz uciec z potoku za pomocą ^:

doskey cc=echo^|set /p=$*^|clip

Po wykonaniu polecenia cc hey, będzie teraz zostały heyskopiowane do schowka!

CoolOppo
źródło
Zastanawiałem się także, jak zapobiec kopiowaniu znaku nowej linii! Dzięki.
Alex Vallejo
7

aby dodać do poprzednich odpowiedzi, możesz również to zrobić:

mybatfile.cmd

    doskey /macrofile=aliases.txt

aliases.txt

    foo = bar i baz
    cpdel = skopiuj 1 $ 2 $ T del $ 1
    cc = echo | set / p = $ * | klip

zwróć uwagę, że w makrofile nie ma potrzeby ucieczki potoku / ampersand i możesz zdefiniować wiele aliasów w jednym wywołaniu.

spirytus
źródło