命令提示符中的命令别名?


18

如何像在Windows中那样在Windows的命令提示符中创建命令别名bash

我是doskey论坛主题中找到的,所以我可以执行以下操作:

doskey ls=dir /b

...现在该命令的ls行为有点像ls在Unix上。(我ls经常在中输入cmd,这甚至不好笑。)

但是,如何使它们在会话之间停留呢?下次我打开时,它消失了cmd.exe。(有类似的东西.bash_profile吗?)


抱歉,使它脱离主题,但您可以从安装cygwin副本并在其掌垫上安装所有unix工具中受益
bubu 2010年

是的,我很想,但是我不认为这是一个选择(可能比它值得的工作还要多)。我的主要计算机是Linux和OS X-我现在正在Windows上测试一些程序。
本杰明·奥克斯

1
没有什么可做的。cygwin.com/setup.exe是您需要安装的全部。只需下载并单击下一步。一切都非常简单。两者配置都不多。
bubu 2010年

嗯...好吧,我会尝试的。机器已经有很多问题了……;)
本杰明·奥克斯

4
除非您的MS-DOS是6.22或更低版本,否则您没有在运行DOS。通过提及cmd.exe,我认为您正在谈论的是基本的WinNT / 2k / XP / etc命令外壳。
quack quixote 2010年

Answers:


0

在这种情况下,可以使用cygwin,尽管这并非完全正确。

http://www.cygwin.com/ CygWin
下载:http : //cygwin.com/setup.exe

要在Windows中轻松访问它,可以在路径中放入c:\ cygwin \ bin。

请注意,有一些与Windows软件冲突的命令并不等效,例如find(1)vs find.exe-find(1)列出了所有文件和子目录,而find.exe功能类似于grep。

另一种选择是访问

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun或HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun

查看

 cmd.exe /? 
更多细节


嗯...似乎没有使用我的Windows路径...我想稍后再解决这个问题。(以前从未认真使用过Cygwin。)到目前为止,感谢您的帮助。
本杰明·奥克斯

在Windows路径环境变量中添加cygwin路径,使您可以在cmd.exe中的cygwin环境中使用这些工具;请注意,有一些警告,例如find.exe与cygwin提供的find命令冲突。
bubu 2010年

为什么要投票?我只是不知道
布布

34

使用@DOSKEY命令和HKCU\Software\Microsoft\Command Processor自动运行选项在Windows命令提示符中设置永久别名非常容易。

快速分步指南:

  1. 创建一个新的批处理文件,将其命名为Alias.bat。复制/粘贴以下文本。提示:我建议C:\Bin为所有命令行工具创建一个文件夹。
  2. 打开寄存器HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  3. 添加一个名为的字符串值Autorun,并将该值设置为Alias.bat文件的绝对路径。
  4. 做完了

每当您打开命令提示符时,该批处理文件都将执行。

Alias.bat的内容

DOSKEY ls=DIR $* 
DOSKEY cp=COPY $* 
DOSKEY xcp=XCOPY $*
DOSKEY mv=MOVE $* 
DOSKEY clear=CLS
DOSKEY h=DOSKEY /HISTORY
DOSKEY alias=if ".$*." == ".." ( DOSKEY /MACROS ) else ( DOSKEY $* )

现在,您可以键入alias(即DOSKEY /MACROS)以查看别名/宏的当前列表。

要为当前会话添加新的别名,您只能使用alias name=command


1
设置简单,易于更新,我非常喜欢这一点!
Urda

不幸的是,此后我已经停止使用这些别名,因为该@DOSKEY命令在退出Autodesk Maya 2010时会导致崩溃。可能有解决方法,例如检查父进程是否为Maya,但是我没有花时间进行调查。
丹尼斯

9

也有点离题-

使用PowerShell而不是cmd.exe命令行。好消息是,PowerShell具有与等效的功能.bash_profile,并且就像cmd.exe命令行一样运行。它带有内置的别名生成功能。坏消息是,如果您想做一些比简单cmd.exe命令更复杂的事情,那将有一些学习上的困难。

顺便说一下,现成ls定义为的别名dir


为什么以前没有人告诉过我使用Power-shell?对于很多事情来说,它要好得多。
安德烈斯(Andres)

3

有一个注册表项, HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun可让您在启动cmd提示符时运行命令。这包括一个批处理文件。


您可能要指向HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun,因为其他人将没有与您相同的用户ID。
bubu 2010年

@bubu:哦,很正确,对不起。我发现通过搜索注册表,我没有想到。
Phoshi 2010年

1

我建议直接从此链接安装这些命令的dos版本。

简单,轻便,高效等。使用了一段时间后,让我高兴!Cygwin可以满足我所需的必需品。


0

尝试将它们放在autoexec.bat中。我不确定,您必须尝试一下。将autoexec.bat本身放在C:\


似乎不起作用...
本杰明·奥克斯


0

我将做一个死灵法师,并将这条线索从死里复活。这个答案对我来说并不令人满意。我知道有更好的方法。我涉足制作和添加蝙蝠文件的问题,并试图弄清楚如何使意大利面条球正常运转,但效果并不理想。无论如何,我还是回到了Google。

我也确实找到了这个方法。如何添加新的DOS别名/命令并为管理DOS创建键盘快捷键。它的工作原理很棒,应该可以在98-7上运行(有点滑稽的编号系统,但是它是Windows)。我希望它能帮助该线程上的那些人以及那些Google发送这种方式的人。

这种方式不像Alias一样简单,也不是doskey。设置完成后,这几乎是相同的工作。

我还要补充一点,与丹尼斯·威廉姆森的答案合并的部分要好得多。您可以为同一应用程序的多个版本提供shell环境,例如,旧脚本为php 4,测试服务器为php 5。

无论如何,这对我来说要好得多。


0

通过设置PATH环境来解决

创建ls.c文件

输入以下代码

int main()
{
system("dir /b");
return 0;
}

进入ls.c并编译文件:

$gcc ls.c -o ls

创建一个可执行文件ls.exe

创建目录,将其命名为cmdline_tools

$mkdir cmdline_tools

ls.exe复制到目录

在PATH环境中设置目录的路径[复制目录的位置并将其粘贴到PATH中]

C:/cmdline_tools

打开您的cmd.exe并输入

$ ls

它用作dir命令。您也可以用相同的方式处理其他命令。如果没有,请告诉我们。


0

CMD具有来自doskey和bashrc的别名/功能(来自cygwin> bash),正斜杠也可在cmd中使用(从Win7开始)

  1. 创建shorcut到cmd以使用cmdrc.cmd

    cmd -a“ / k%HOME%\ cmdrc.cmd c:\”

2 C:>猫%HOME%/ cmdrc.cmd

:: Override same named builtin windows commands
:: To override these aliases, prefix with '@', eg. @date will not use alias.
@doskey date=c:\cygwin\bin\date.exe $*
@doskey echo=c:\cygwin\bin\echo.exe $*
@doskey mkdir=c:\cygwin\bin\mkdir.exe $*
@doskey rmdir=c:\cygwin\bin\rmdir.exe $*
@doskey find=c:\cygwin\bin\find.exe $*
@doskey time=c:\somedir\time.exe $*

:: using a particular rsync with some options
@doskey rsync=c:\cygwin\bin\rsync.exe -e "ssh -F %HOME%/.ssh/config" $*   

@doskey cp='cp -vi %*'
@doskey ..=cd ..
@doskey ...=cd ../.. 

:: Or use bashrc (bash aliases, bash functions):

:: eg. In bashrc we have "alias cpvi='cp -vi'"

@doskey cpvi=bash -ic "set +u; cpvi $*"  

:: now cpvi is callable from cmd.

:: Install clink_x64 if you want readline editing in cmd
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.