复合命令的Doskey


32

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

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

有什么办法吗?

Answers:



19

使用$T到不同的命令:

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

来自doskey /?

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

7

要(某种程度上)添加到Dennis Williamson的答案中,您还可以转义管道字符以管道命令!例如,我想要一个将内容复制到剪贴板的命令。由于将采用这种方式COPY进行解释,因此您需要执行一个看起来很愚蠢的命令,以便它可以实际复制您指定的文本,而无需在其后加上换行符。

为了定义要复制到剪贴板的宏,可以使用^以下命令对管道进行转义:

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

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


我也想知道如何防止换行符的复制!谢谢。
亚历克斯·瓦列霍

7

要添加到先前的答案中,您还可以执行以下操作:

mybatfile.cmd

    doskey /macrofile=aliases.txt

aliases.txt

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

请注意,在宏文件中,不需要对管道/符号进行转义,并且可以在一个调用中定义多个别名。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.