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
复制到剪贴板!