2013-03-04 07:28:04 +0000 2013-03-04 07:28:04 +0000
71
71

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

我以前在bash上工作,从别名中受益匪浅。在Windows命令行中有没有类似的方法?

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

答案 (7)

68
68
68
2013-03-04 12:03:15 +0000

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

doskey macroName=macroDefinition

宏参数在定义中通过$前缀位置引用。$1$9$*代表所有。

更多信息请参见 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%
``` 。
16
16
16
2013-03-04 13:01:49 +0000

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

在 Linux 上,你可以制作一个脚本并将其添加到 ~/bin 文件夹中,在 Windows 上你也可以这样做。

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

quickcd.cmd

@echo off
cd /d a_very_long_path

现在你可以在命令行输入quickcd

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

call quickcd
``` 调用。
14
14
14
2014-01-09 06:21:00 +0000

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
10
10
10
2013-03-11 10:14:50 +0000

你可以使用与windows相同的技巧:设置一个环境变量(或者只是批处理上下文中的一个变量),例如有一个环境变量%windir%(还有其他一些),所以你可以做一个

cd C:\Windows\

或者

cd %windir%

做同样的事情。所以,你要做的就是

set "mydir=C:\very\long\path\to\my\data\"

之后你可以做(无论你在哪里):

dir %mydir%

或者

cd %mydir%

或者任何你想要的。

1
1
1
2015-09-09 18:42:36 +0000

我做了一个这样的 “别名",专门用于改变目录。基本上,我创建了一个名为fav.bat的文件,并将其放入PATH中的一个文件夹中(例如C:\MyBatches):

@setlocal
@echo off
set userChoice=%1
rem The format is:
rem call :condition SHORTCUT FOLDER
call :condition web c:\Git\SecThor\SecWeb\App\
call :condition cloud c:\Git\SecThor\SecCloud\dojo.backend\
call :condition good c:\Users\Vitaly\Dropbox\Projects\goodread-friends\
endlocal
popd
GOTO :eof

:condition
rem We do PUSHD twice since endlocal does popd once :|
if "%userChoice%"=="%1" pushd %2 & pushd %2 & echo pushd %2
if "%userChoice%"=="" echo %1 =^> %2
GOTO :eof

然后我就可以很快地跳转到任何预定义的文件夹。我写了一篇关于这个技术的完整文章 这里

1
1
1
2019-02-18 12:41:06 +0000

你可以使用doskey.exe ,下面是一个例子:

doskey qcd=cd [pathname]

现在如果你输入qcd,它将cd到该路径。

这里有一些关于doskey宏的帮助。

doskey [macroname]=[command]

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

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

如果你输入word 输出是:

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

你可以用$1-$9作为参数,下面是一个例子:

doskey npd=notepad $1

如果你输入npd,它将打开notepad,但是如果我们输入npd test.txt,它将打开notepad中的test.txt

你可以对所有参数使用$/*,下面是另一个例子:

doskey prt=echo $*

如果你输入prt This is short.,那么输出将是。

这是短的。

你可以使用$T来执行多个命令,下面是一个例子:

doskey newline=echo $1 $T echo $2

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

这是短的。

Hello

and

我希望你能理解。

0
0
0
2016-11-16 18:41:42 +0000

假设你仍然在同一个驱动器上,即不需要D:那么cd D:\somedir假设你仍然在同一个驱动器上,即不需要D:`那么。

在我的例子中,C:存放系统文件,但所有的工作都在D:

2个部分。首先设置一些工作目录,使用批处理文件。

比方说localprofile.cmd。你可以有多个这样的文件,只要根据需要运行它们就可以了。

set wd1=D:\home\work\fb440.dumper
set wd2=D:\home\work\py\tests

现在用另一个命令文件来移动,根据你刚才设置的那些环境变量。

wd.cmd

echo off
d:
if %1.==. set | findstr wd
if %1==1 cd %wd1%
if %1==2 cd %wd2%
if %1==3 cd %wd3%
if %1==4 cd %wd4%
if %1==5 cd %wd5%
if %1==6 cd %wd6%

还有一点使用示例。

D:\home\bin>wd 2

D:\home\bin>echo off
D:\home\work\py\tests>wd 1

D:\home\work\py\tests>echo off

wd本身应该是显示书签目录的列表。它工作了,但不知道为什么我得到这个 “意外的cd "消息。

D:\home\work\fb440.dumper>wd

D:\home\work\fb440.dumper>echo off
wd1=D:\home\work\fb440.dumper
wd2=D:\home\work\py\tests
cd was unexpected at this time.

D:\home\work\fb440.dumper>

常规的.cmd批次

除了目录导航,你可以在PATH的某个地方创建一个foo.cmd,它可以作为一个别名。记住,与Linux/OSX shell不同,cmd文件可以影响环境变量和会话,而不需要source它们。

我有一个cdbin.cmd来导航我,例如:

d:
cd \home\bin

这是一个伪grep grep.cmd

findstr -n %1 %2

在行动中(不管排序/+2 /+10是什么意思)

D:\home\work\fb440.dumper>grep class *.py | sort /+2 /+10

dumper2.py:18:class PrettySafeLoader(yaml.SafeLoader):            
dumper2.py:27:class Comparator(object):                           
dumper2.py:3:class module_settings:                               
linker2.py:5:class module_settings:                               
dumper2.py:65:class DataCompProcessor(object):                    
dumper2.py:69:class DataCompTextRenderer(DataCompProcessor):      
dumper2.py:76:class DataComparator(object):
``` 。