复合命令的 Doskey

复合命令的 Doskey

Doskey 在现代版本的 Windows 中用于为单个命令设置别名,例如doskey foo=bar

尝试将其用于复合命令时会遇到一个小问题,doskey foo=bar & baz因为这会被解释为(doskey foo=bar) & baz。明显的解决方法是添加显式括号,doskey foo=(bar & baz)但由于某种原因,这不起作用,也doskey foo="bar & baz"不起作用。

有什么办法可以做到这一点?

答案1

转义“&”符号。

foo=bar ^& baz

答案2

用于$T分隔命令:

doskey foo=bar $T baz
doskey cpdel=复制 $1 $2 $T del $1

doskey /?

$T 命令分隔符。允许在一个宏中输入多个命令。

答案3

除了前面的答案之外,您还可以这样做:

脚本文件

    doskey /宏文件=别名.txt

别名.txt

    foo=bar&baz
    cpdel=复制$1$2$T del$1
    cc=echo|设置/p=$*|clip

请注意,在宏文件中,无需转义管道/与号,并且您可以在一次调用中定义多个别名。

答案4

(某种程度上)补充丹尼斯·威廉姆森的回答,您还可以转义管道字符以管道命令!例如,我想要一个将内容复制到剪贴板的命令。由于COPY解释它的方式,您需要执行一个看起来很傻的命令它实际上复制您指定的文本,而不跟换行符。

为了定义一个用于复制到剪贴板的宏,你可以使用以下命令退出管道^

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

执行命令后cc hey,您现在将hey复制到剪贴板!

相关内容