Создать псевдоним в 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

Ответы:


84

Мало кто знает об этом, но вы можете использовать doskeyвстроенный макро-инструмент, единственная проблема в том, что он не сохраняет. Есть много способов обойти это все же.

использование:

doskey ls=dir

lsтеперь будет делать список каталогов, как если dirбы

Если вы хотите использовать аргументы с командами, используйте этот синтаксис:

doskey d=dir $*

Что касается обходного пути, чтобы заставить их сохранить:

  • сохранить все псевдонимы в файл в этом формате:
doskey ls = dir
доски .. = кд ..

и поместите его в один из каталогов на вашем пути. Назовите это как-то коротко, как a.cmd , поэтому при открытии cmd вы можете ввести a, чтобы загрузить псевдонимы.

Если ввод 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 with aliases). Пусть он запустит указанную выше команду и поместит этот пакетный скрипт где-нибудь на вашем пути.

1
+1 КРАСИВО !!! Давно не видел (или не вспоминал) Доски! ... (
Играю

19
Нет необходимости в скрипте AutoHotkey здесь. Windows позволяет автоматически запускать командный файл при каждом запуске cmd.exe: technet.microsoft.com/en-us/library/cc779439(WS.10).aspx Я настраиваю его так, чтобы он указывал на c: \ dev \ autorun.bat который загружает макросы doskey и запускает другие удобные утилиты.
Дан Фабулич

Я действительно удивлен, что никто не предложил PowerShell, он чертовски хорош.
Эдди Б

Работают ли определенные макросы из поля Win + R (Run) ???
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"

«color OA», вероятно, должен быть «color 0A».
csnullptr

1
Вам нужна только "Autorun"="..."строка под [HKEY_...]линией, если вы не хотите явно установить и другие ключи.
c24w

5

Мой ответ похож на Вриолька

Я создал файл .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 \ Программное обеспечение \ Microsoft \ Командный процессор \ Автозапуск
  и / или
HKEY_CURRENT_USER \ Программное обеспечение \ Microsoft \ Командный процессор \ Автозапуск

используя regedit, добавьте путь к вашему пакетному файлу макроса в значение AutoRun (добавьте ключ AutoRun, если его там нет):

C: \ winscripts \ autoexec.bat

теперь всякий раз, когда вы запускаете "cmd" из приглашения Пуск-> Выполнить, этот autoexec.bat также будет запускаться и создавать макросы doskey для вас.

Кстати, whereis.cmd содержит это:

@for %% e in (% PATHEXT%) do @for %% i in (% 1 %% e) do @if НЕ "%% ~ $ PATH: i" == "" echo %% ~ $ PATH: i

который ищет переменную PATH по указанному вами термину:

с:> где челюсть
C: \ JDK \ Bin \ javaw.exe

Кстати, вместо whereisвзлома вы можете использовать whereвстроенную команду
Dheeraj Bhaskar

1

Вы можете создавать .cmd файлы и размещать их где-нибудь в вашем% PATH% (например, C: \ Windows). Чтобы использовать свой веб-псевдоним в качестве примера:

@C:
@cd \inetpub\wwwroot

Сделал бы что-то вроде:

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

Я не знаю ни одного способа сделать плоский файл стиля .aliases.


1

очень быстрый и грязный способ получить готовый ярлык, который не требует много хлопот, - это создать пакетный файл с именем псевдонима в одном из каталогов, которые являются частью переменной среды PATH. Например, я хотел вызвать Notepad ++ через псевдоним, поэтому я создал npp.bat в C: \ WINDOWS, который содержал следующее:

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

Теперь команду npp можно использовать из любой оболочки cmd, без файлов автозапуска и / или экскурсий в реестр.


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>

к псевдониму (Да, нет =, хотя добавить туда .split не составит труда), и:

alias -p <command or part of>

Чтобы показать, что что-то есть.

Взломать, но тупо полезно. Есть эквивалентный сценарий unalias, но я уверен, что вы можете решить его.

редактировать: это, очевидно, требует Python, написанный на v26, но, вероятно, будет работать во всех недавних. Как и раньше, извините за качество :)

edit2: На самом деле, что-то вроде этого, но было бы лучше добавить в доски вещи. Вы также можете добавить команды запуска в cmd с ключом реестра автозапуска, чтобы это было намного чище.


1
Хорошее решение, хотя и немного излишнее для моих нужд.
Pops

Это действительно так. Мне просто нравится контролировать, как работают мои вещи, вот и все: P
Phoshi
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.