Utwórz alias w systemie Windows XP


54

W szkole miałem plik .login podobny do

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

Chciałbym zrobić coś takiego z moim pudełkiem XP tutaj w pracy, ale większość zasobów, które znalazłem w Internecie, wydaje się dość skomplikowana i ciężka. Czy istnieje sposób, aby to zrobić, nie polegając na wygłupianiu rejestru lub uruchomieniu dużego pliku wsadowego?

Mój pierwotny powód, by o to pytać, to to, że potrzebuję tylko wiersza polecenia dla jednego polecenia w jednym określonym folderze i chciałem móc szybko dostać się do tego folderu po uruchomieniu wiersza polecenia. Ale zaakceptowana odpowiedź na to pytanie jest tak dobra, że ​​postanowiłem zapytać o mój pierwotny problem jako osobne pytanie: Zmień domyślny folder startowy dla wiersza polecenia systemu Windows .


Szybką i brudną opcją jest po prostu dodanie folderu do PATHzmiennej. Kliknij prawym przyciskiem Mój komputer , wybierz Właściwości , przejdź do Zaawansowane , a następnie Zmienne środowiskowe . Więcej informacji: stackoverflow.com/a/20773224/722036
aexl 10.09.16

Odpowiedzi:


84

Wydaje się, że niewiele osób o tym wie, ale możesz użyć doskeywbudowanego narzędzia do makr, jedynym problemem jest to, że nie oszczędza. Istnieje jednak wiele sposobów obejścia tego problemu.

stosowanie:

doskey ls=dir

lszrobi teraz listę katalogów tak jak dirby to zrobił.

Jeśli chcesz używać argumentów z poleceniami, użyj następującej składni:

doskey d=dir $*

Jeśli chodzi o obejście, aby je zapisać:

  • zapisz wszystkie aliasy w pliku w tym formacie:
doskey ls = reż
doskey .. = cd ..

i umieść go w jednym z katalogów na swojej ścieżce. Nazwij to coś krótkiego jak a.cmd , więc po otwarciu cmd możesz wpisać a, aby załadować aliasy.

Jeśli pisanie ai naciskanie Enterwydaje się zbyt pracochłonne, wrzuć to do skryptu AutoHotkey :

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

Automatyczne ładowanie aliasów :

Możesz zmienić wszystkie skróty na cmd, aby wskazywały %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd, zastępując C:\path\to\aliases.cmdsię lokalizacją pliku aliasów. Jeśli zwykle uruchamiasz go z pola uruchamiania, możesz:

  • Na przykład zmień nazwę pliku wykonywalnego cmd na cmd2.exe i zastąp go skryptem lub innym plikiem wykonywalnym, który uruchamia powyższe polecenie (tak naprawdę nie polecałbym tej metody, ponieważ wiele aplikacji zależy od cmd)
  • Utwórz skrypt wsadowy i nazwij go na przykład cmda (cmd z aliasami). Niech uruchomi powyższe polecenie i umieści ten skrypt wsadowy gdzieś na swojej ścieżce.

1
+1 ŁADNE !!! Nie widziałem (ani nie pamiętałem) Doskeya od lat! ... (Odtwarzanie piosenki wspomnień w mojej głowie!)
William Hilsum

19
Tutaj nie ma potrzeby używania skryptu AutoHotkey. System Windows umożliwia automatyczne uruchamianie pliku wsadowego przy każdym uruchomieniu cmd.exe: technet.microsoft.com/en-us/library/cc779439(WS.10).aspx Skonfiguruję go tak, aby wskazywał na c: \ dev \ autorun.bat który ładuje makra doskey i uruchamia inne przydatne narzędzia.
Dan Fabulich

Jestem naprawdę zaskoczony, że nikt nie sugerował, że PowerShell jest cholernie dobry.
Eddie B,

Czy zdefiniowane makra działają z okna Win + R (Uruchom) ???
ZEE

38

To proste jak:

  1. Utwórz plik z aliasami, np. C: \ bin \ aliases :

    ls=dir /ONE $*
    cd=cd /d $*
    python=python -ic "" 
    ps=tasklist $*
    kill=taskkill /IM $*
    
  2. Utwórz plik ze wszystkimi rzeczami, które chcesz uruchomić podczas uruchamiania cmd.exe, łącznie z ładowaniem aliasów za pomocą doskey, np. C: \ bin \ cmd_autoruns.cmd :

    @echo off
    cls
    color 0A
    doskey /macrofile=c:\bin\aliases
    
  3. Utwórz i uruchom raz plik wsadowy (np. Set_cmd_autorun.cmd ), który ustawi Autorunklucz Command Processor na cmd_autoruns.cmd :

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

Zamiast pliku set_cmd_autorun.cmd można również utworzyć plik .reg, taki jak ten poniżej, a następnie scalić go podwójnym kliknięciem:

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"

„kolor OA” powinien prawdopodobnie oznaczać „kolor 0A”.
csnullptr

1
Potrzebujesz tylko "Autorun"="..."linii pod [HKEY_...]linią, chyba że chcesz jawnie ustawić także inne klucze.
c24w

5

Moja odpowiedź jest podobna do odpowiedzi Vriolka

Utworzyłem plik .bat, który zawierał moje makra (np. C: \ winscripts \ autoexec.bat):

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

a następnie z wiersza polecenia cmd uruchomiono polecenie „cmd /?” aby znaleźć klucz rejestru do edycji dla autouruchamiania cmd:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun
  i / lub
HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun

używając regedit dodaj ścieżkę do pliku wsadowego makra do wartości AutoRun (dodaj klucz AutoRun, jeśli go nie ma):

c: \ winscripts \ autoexec.bat

teraz za każdym razem, gdy uruchomisz polecenie „cmd” z wiersza Start-> Uruchom, ten plik autoexec.bat uruchomi się i utworzy makra doskey.

Nawiasem mówiąc, whereis.cmd zawiera to:

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

który przeszukuje twoją zmienną PATH w poszukiwaniu podanego terminu:

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

BTW zamiast whereishacka możesz użyć wherewbudowanego polecenia
Dheeraj Bhaskar

1

Możesz tworzyć pliki .cmd i umieszczać je gdzieś w% PATH% (np. C: \ Windows). Aby użyć swojego aliasu internetowego jako przykładu:

@C:
@cd \inetpub\wwwroot

Zrobiłby coś takiego:

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

Nie znam żadnego sposobu na utworzenie płaskiego pliku w stylu .aliases.


1

bardzo szybkim i brudnym sposobem na uzyskanie gotowego skrótu, który nie wymaga dużego wysiłku - jest utworzenie pliku wsadowego nazwanego na podstawie aliasu, w jednym z katalogów, które są częścią zmiennej środowiskowej PATH. Na przykład chciałem wywołać Notepad ++ poprzez alias, więc utworzyłem npp.bat w C: \ WINDOWS, który zawierał:

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

teraz polecenia npp można używać z dowolnej powłoki cmd, bez plików autorun i / lub wycieczek do rejestru


0

Sposób, w jaki to zrobiłem, był za pomocą szybkiego skryptu 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()

Przepraszamy za słabe skrypty, ale użycie jest całkiem niezłe, imo. Umieść go gdzieś na swojej ścieżce, dodaj .py do PATHEXT i dodaj także c: \ aliasy do PATH (lub zmień go, w zależności od koloru), a następnie użyj:

alias <command> <action>

do aliasu (Tak, nie =, chociaż nie byłoby trudno dodać tam .split) i:

alias -p <command or part of>

Aby wyświetlić, co to jest.

Hackish, ale głupio przydatne. Istnieje równoważny skrypt Unalias, ale jestem pewien, że możesz go rozwiązać.

edycja: To oczywiście wymaga Pythona, napisanego na v26, ale prawdopodobnie będzie działało w każdej nowej wersji. Tak jak poprzednio, przepraszam za jakość :)

edit2: Właściwie coś takiego, ale dodanie do doskey rzeczy byłoby lepsze. Możesz także dodawać polecenia uruchamiania do cmd za pomocą klucza rejestru autorun, dzięki czemu może być znacznie czystsze.


1
Ładne rozwiązanie, choć trochę przesadne jak na moje potrzeby.
Wyskakuje

Rzeczywiście jest. Po prostu lubię mieć kontrolę nad tym, jak działają moje rzeczy, wszystko to: P
Phoshi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.