如何在 Windows 命令行中设置别名?

如何在 Windows 命令行中设置别名?

我以前使用过 bash,从别名中受益匪浅。Windows 命令行中是否有等效的方法?

我不想模拟 Linux 环境,所以 cygwin 不是一个选择。我只是需要一些非常长的命令的快捷方式,比如cd a_very_long_path

答案1

正如 Christian.K 在他的评论中所说,DOSKEY 命令可用于定义宏,类似于别名。

doskey macroName=macroDefinition

宏参数在定义中通过$前缀位置引用:$1through$9$*for all。

查看doskey technet 文档,或者从命令行键入doskey /?help doskey以获取更多信息。

但是 DOSKEY 宏存在严重的局限性:

  • 宏仅在交互式命令行上起作用 - 它们在批处理脚本中不起作用。
  • 它们不能在管道的两侧使用:两者someMacro|findstr '^'都会dir|someMacro失败。
  • 它们不能在 FOR /F 命令中使用:for /f %A in ('someMacro') do ...失败

限制非常严重,以至于我很少使用 DOSKEY 宏。

显然,您可以创建批处理脚本而不是宏,并确保脚本位置在您的 PATH 中。但是如果您想在另一个脚本中使用该脚本,则必须在每个脚本前面加上 CALL。

您可以为长且经常使用的命令创建简单的变量“宏”,但语法输入起来有点尴尬,因为您需要在想要使用它时扩展“宏”。

定义:

set "cdMe=cd a_very_long_path"

用法(从命令行或脚本)

%cdMe%

答案2

您可以制作一个批处理脚本并将其保存到您的路径中。

添加%USERPROFILE%\bin到您的PATH环境变量。然后将您的脚本保存在那里。

quickcd.cmd

@echo off
cd /d a_very_long_path

现在您可以quickcd在命令行中输入。

call也可以使用函数在脚本中调用它

call quickcd

答案3

subst

如果你真的想解决这样的事情:

C:> cd \users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

您可以使用subst命令将该长路径映射到单独的驱动器号

subst m: c:\users\myLoginID\documents\clients\MTV\strategy\roadmap\deliverable\final

然后,当您想要跳转到该文件夹​​时,只需m:在命令行中输入即可。

这样做的好处doskey是它可以在所有批处理程序中运行,并显示在 Windows 内的任何文件对话框中。

如果您不再需要映射:

subst m: /D

答案4

您可以使用执行程序,下面是一个例子:

doskey qcd=cd [pathname]

现在如果你输入qcd它将会光盘到那条路。

以下是一些帮助任务列表宏:

doskey [macroname]=[command]

这是最简单的形式,这是一个例子:

doskey word=echo This is a really, really long sentence.

如果你输入,word输出为:

这是一个非常非常长的句子。

您可以使用 $1-$9 作为参数,以下是示例:

doskey npd=notepad $1

如果你输入npd它将打开记事本但如果我们输入npd test.txt它就会打开测试.txt记事本

您可以使用 $* 作为所有参数,下面是另一个示例:

doskey prt=echo $*

如果你输入,prt This is short.则输出将是:

这很短。

您可以使用 $T 来执行多个命令,以下是示例:

doskey newline=echo $1 $T echo $2

如果你输入,newline Hello and则输出将是:

你好

我希望你明白。

相关内容