复合命令的 Doskey

rwa*_*ace 34 windows command-line

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

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

有没有办法做到这一点?

Den*_*son 43

逃离&符号。

foo=bar ^& baz
Run Code Online (Sandbox Code Playgroud)


Joh*_*n T 21

使用$T到不同的命令:

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

来自doskey /?

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


小智 9

要添加到以前的答案,您还可以这样做:

mybatfile.cmd

    doskey /macrofile=aliases.txt

别名.txt

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

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


Coo*_*ppo 8

为了(有点)添加丹尼斯威廉姆森的答案,您还可以转义管道字符以管道命令!例如,我想要一个将内容复制到剪贴板的命令。由于COPY会解释它的方式,您需要为它执行一个看起来很傻的命令来实际复制您指定的文本,而不会在其后跟换行符。

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

doskey cc=echo^|set /p=$*^|clip
Run Code Online (Sandbox Code Playgroud)

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