在Windows XP中创建别名


54

回到学校后,我曾经有一个.login文件

alias ll = ls -l  
alias dir = ls -Fhl  
alias web = cd ~/public/public_www/development  

我想在这里使用XP盒来做这种事情,但是我在网上找到的大多数资源似乎都相当复杂和繁重。有没有一种方法可以解决此问题,而无需在注册表中进行处理或运行大型批处理文件?

我问这个问题的最初原因是,我只需要在一个特定文件夹中使用一个命令的命令行,并且我希望能够在启动命令行时快速进入该文件夹。但是,这个问题的答案非常好,以至于我决定将我的原始问题作为一个单独的问题询问:更改为Windows命令提示符的默认启动文件夹


一种快速和肮脏的选择是将文件夹添加到PATH变量中。右键单击“ 我的电脑”,选择“ 属性”,转到“ 高级”,然后选择“ 环境变量”。更多信息:stackoverflow.com/a/20773224/722036
aexl

Answers:


84

似乎没有多少人知道它,但是您可以使用doskey内置的宏工具,唯一的问题是它不能保存。尽管有很多方法可以解决此问题。

用法:

doskey ls=dir

ls现在将像目录一样列出目录dir

如果要在命令中使用参数,请使用以下语法:

doskey d=dir $*

至于使它们保存的解决方法:

  • 将所有别名以以下格式保存到文件中:
doskey ls = dir
doskey .. = cd ..

并将其放置在路径中的目录之一中。将其命名为a.cmd之类的简短名称,因此在打开cmd时可以键入a来加载别名。

如果键入an a并按Enter似乎过多的工作,请将其放入您的AutoHotkey脚本中:

WinWaitActive, C:\WINDOWS\system32\cmd.exe
Send {a}{Enter}

自动加载别名

您可以将所有快捷方式更改为cmd以指向%SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd,替换C:\path\to\aliases.cmd为别名文件的位置。如果通常在运行框中运行它,则可以:

  • 例如,将cmd可执行文件重命名为cmd2.exe,然后将其替换为启动上述命令的脚本或其他可执行文件(我不推荐使用此方法,因为很多应用程序都依赖于cmd)
  • 例如,制作一个批处理脚本并将其命名为cmda(带别名的cmd)。让它启动以上命令,然后将此批处理脚本放在您的路径中。

1
+1 NICE!多年没有看过(或记得过)Doskey!...(在我脑海中播放回忆之歌!)
William Hilsum

19
此处不需要AutoHotkey脚本。Windows提供了一种在启动cmd.exe时自动运行批处理文件的方法:technet.microsoft.com/zh-cn/library/cc779439(WS.10).aspx 我将其配置为指向c:\ dev \ autorun.bat加载doskey宏并运行其他方便的实用程序。
Dan Fabulich 2010年

我真的很惊讶,没有人建议PowerShell非常好。
Eddie B

定义的宏是否可以在Win + R(运行)框中工作?
ZEE

38

这很简单:

  1. 用别名创建文件,例如c:\ bin \ aliases

    ls=dir /ONE $*
    cd=cd /d $*
    python=python -ic "" 
    ps=tasklist $*
    kill=taskkill /IM $*
    
  2. 使用启动cmd.exe时要运行的所有内容创建一个文件,包括使用doskey加载别名,例如c:\ bin \ cmd_autoruns.cmd

    @echo off
    cls
    color 0A
    doskey /macrofile=c:\bin\aliases
    
  3. 创建并运行一次批处理文件(例如set_cmd_autorun.cmd),它将命令处理器Autorun键设置为我们的cmd_autoruns.cmd

    reg add "hkcu\software\microsoft\command processor" /v Autorun /t reg_sz /d c:\bin\cmd_autoruns.cmd
    

作为set_cmd_autorun.cmd的替代方法,还可以创建一个.reg文件,如下所示,然后双击将其合并:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"CompletionChar"=dword:00000009
"DefaultColor"=dword:00000000
"EnableExtensions"=dword:00000001
"PathCompletionChar"=dword:00000009
"Autorun"="c:\\bin\\cmd_autoruns.cmd"

“颜色OA”可能应该是“颜色0A”。
csnullptr 2011年

1
您只需要该"Autorun"="..."行下面的[HKEY_...]行,除非您也想显式设置其他键。
c24w

5

我的答案类似于vriolk的

我创建了一个包含我的宏的.bat文件(例如c:\ winscripts \ autoexec.bat):

@doskey whereis = c:\ winscripts \ whereis.cmd $ *
@doskey ls = dir / b $ *
@doskey l = dir / od / p / q / tw $ *

然后在cmd提示符下运行“ cmd /?” 查找要为cmd自动运行进行编辑的注册表项:

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

使用regedit,将宏批处理文件的路径添加到AutoRun值(如果不存在,请添加AutoRun键):

c:\ winscripts \ autoexec.bat

现在,只要您从“开始”->“运行”提示符下运行“ cmd”,此autoexec.bat还将运行并为您创建doskey宏。

顺便说一下,whereis.cmd包含以下内容:

@for(%PATHEXT%)中的%% e做@for(%1 %% e)中的%% i做@if NOT“ %%〜$ PATH:i” ==“” echo %%〜$ PATH:i

它将在PATH变量中搜索您提供的术语:

c:> whereis javaw
c:\ jdk \ bin \ javaw.exe

BTW可以代替whereis您使用hack,where它是内置命令
Dheeraj Bhaskar 2014年

1

您可以创建.cmd文件,并将它们放置在%PATH%中的某个位置(例如C:\ Windows)。以您的网络别名为例:

@C:
@cd \inetpub\wwwroot

会做类似的事情:

M:\> web
C:\inetpub\wwwroot>

我不知道如何制作平面.aliases样式文件。


1

不需要太多麻烦的快速便捷的快捷方法是在PATH环境变量的一部分目录中创建一个以别名命名的批处理文件。例如,我想通过别名调用Notepad ++,因此我在C:\ WINDOWS中创建了包含以下内容的npp.bat:

"c:\Program Files\Notepad++\notepad++.exe" %1 %2 %3 %4 %5

现在可以在任何cmd shell中使用npp命令,而无需自动运行文件和/或对注册表的任何改动


0

我这样做的方法是使用快速的python脚本:

import sys
import string
import os
import glob

def listAll():
        for infile in glob.glob("c:\\aliases\\*.bat"):
            fileName = infile
            fileName = fileName[len("c:\\aliases\\"):len(fileName)-4]
            fileContents = open("c:\\aliases\\" + fileName + ".bat", "r")
            fileContents.readline()
            fileContentString=fileContents.readline()
            fileName += " is aliased to "
            fileName += fileContentString[0:len(fileContentString)-3]
            print fileName

def listSome(which):
        for infile in glob.glob("c:\\aliases\\*.bat"):
            fileName = infile
            fileName = fileName[len("c:\\aliases\\"):len(fileName)-4]
            fileContents = open("c:\\aliases\\" + fileName + ".bat", "r")
            fileContents.readline()
            fileContentString=fileContents.readline()
            if fileName.find(which)==0:
                fileName += " is aliased to "
                fileName += fileContentString[0:len(fileContentString)-3]
                print fileName

if len(sys.argv)>1:
    if sys.argv[1]!="-p":
        file = open("c:\\aliases\\"+sys.argv[1]+".bat", "w")
        file.write("@ECHO OFF\n")
        counter=0
        totalInput=""
        counter=0
        for arg in sys.argv:
            if counter > 1:
                totalInput+= arg + " "
            counter+=1

        if totalInput.find(".exe")!=-1:
            file.write("\"")

        counter=0

        for arg in sys.argv:
            if counter > 1:
                file.write(arg)
                if sys.argv[1]==sys.argv[2]:
                    if counter==2:
                        file.write(".exe")
                temparg=str(arg)
                if temparg.find(".exe")!=-1:
                    file.write("\"")
                file.write(" ")
            counter+=1
        file.write("%*")

        print "Aliased " + sys.argv[1] + " to " + totalInput
    else:
        if len(sys.argv)>2:
            listSome(sys.argv[2])
        else:
            listAll()
else:
    listAll()

不好意思的脚本道歉,但imo用法非常好。将其放置在路径中的某处,将.py添加到您的PATHEXT中,并将c:\ aliases添加到您的PATH中(或更改它,无论如何),然后使用:

alias <command> <action>

别名(是的,no =,尽管在其中添加.split并不困难),并且:

alias -p <command or part of>

显示什么是什么。

朴实,但非常有用。有一个等效的unalias脚本,但是我敢肯定您可以解决这个问题。

编辑:这显然需要在v26上编写的python,但可能会在最近的任何版本中工作。和以前一样,对质量表示抱歉:)

edit2:实际上,像这样,但添加到doskey的东西会更好。您也可以使用自动运行注册表项将启动命令添加到cmd,这样可能会更清洁。


1
不错的解决方案,尽管有点满足我的需求。
流行

的确是。:P
Phoshi
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.