我以前使用过 bash,从别名中受益匪浅。Windows 命令行中是否有等效的方法?
我不想模拟 Linux 环境,所以 cygwin 不是一个选择。我只是需要一些非常长的命令的快捷方式,比如cd a_very_long_path
。
答案1
正如 Christian.K 在他的评论中所说,DOSKEY 命令可用于定义宏,类似于别名。
doskey macroName=macroDefinition
宏参数在定义中通过$
前缀位置引用:$1
through$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
则输出将是:
你好
和
我希望你明白。