Доски для составной команды


32

Doskey работает в современных версиях Windows для установки псевдонимов для отдельных команд, например doskey foo=bar.

Есть небольшая проблема, пытаясь использовать его для составных команд, так doskey foo=bar & bazкак это интерпретируется как (doskey foo=bar) & baz. Очевидным решением будет добавить явные скобки, doskey foo=(bar & baz)но по какой-то причине это не работает и doskey foo="bar & baz"не работает.

Есть ли способ сделать это?

Ответы:



19

Используйте $Tдля разделения команд:

doskey foo = bar $ T baz
doskey cpdel = copy $ 1 $ 2 $ T del $ 1

от doskey /?:

$ T Командный разделитель. Позволяет несколько команд в макросе.

7

Чтобы (в некоторой степени) добавить ответ Денниса Уильямсона , вы также можете экранировать символ канала, чтобы передавать команды! Например, я хотел команду, которая копирует вещи в буфер обмена. Из-за того, как он COPYбудет интерпретироваться, вам нужно сделать глупую команду, чтобы он действительно копировал указанный вами текст, без последующего перевода строки.

Чтобы определить макрос для копирования в буфер обмена, вы можете выйти из канала с помощью ^:

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

После выполнения команды cc heyвы будете heyскопированы в буфер обмена!


Мне также было интересно, как предотвратить копирование символа новой строки! Спасибо.
Алекс Вальехо

7

Чтобы добавить к предыдущим ответам, вы также можете сделать это:

mybatfile.cmd

    doskey /macrofile=aliases.txt

aliases.txt

    foo = bar & baz
    cpdel = copy $ 1 $ 2 $ T del $ 1
    cc = echo | set / p = $ * | clip

обратите внимание, что в макрофиле нет необходимости экранировать трубу / амперсанд, и вы можете определить несколько псевдонимов за один вызов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.