Erstellen Sie einen Alias ​​in Windows XP

54

Früher hatte ich in der Schule eine .login-Datei nach dem Vorbild von

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

Ich würde so etwas gerne mit meiner XP-Box hier bei der Arbeit machen, aber die meisten Ressourcen, die ich online gefunden habe, scheinen ziemlich kompliziert und belastbar zu sein. Gibt es eine Möglichkeit, dies zu tun, ohne in der Registrierung herumzuspielen oder eine große Batch-Datei auszuführen?

Mein ursprünglicher Grund dafür war, dass ich nur die Befehlszeile für einen Befehl in einem bestimmten Ordner benötige und in der Lage sein wollte, schnell zu diesem Ordner zu gelangen, als ich die Befehlszeile startete. Die akzeptierte Antwort auf diese Frage ist jedoch so gut, dass ich beschlossen habe, zu meinem ursprünglichen Problem eine separate Frage zu stellen: Wechseln Sie zum Standardstartordner für die Windows-Eingabeaufforderung .

Pops
quelle
Eine schnelle und schmutzige Option ist, den Ordner einfach der PATHVariablen hinzuzufügen . Klicken Sie mit der rechten Maustaste auf Arbeitsplatz , wählen Sie Eigenschaften , gehen Sie zu Erweitert und dann zu Umgebungsvariablen . Weitere Informationen: stackoverflow.com/a/20773224/722036
aexl

Antworten:

84

Es scheinen nicht viele Leute darüber Bescheid zu wissen, aber Sie können das doskeyintegrierte Makrotool verwenden. Das einzige Problem ist, dass es nicht speichert. Es gibt jedoch viele Möglichkeiten, dies zu umgehen.

Verwendungszweck:

doskey ls=dir

lswerde jetzt eine verzeichnis auflistung machen wie dires gerne wäre.

Wenn Sie Argumente mit den Befehlen verwenden möchten, verwenden Sie diese Syntax:

doskey d=dir $*

Was die Problemumgehung angeht, um sie zu retten:

  • Speichern Sie alle Aliase in einer Datei in folgendem Format:
doskey ls = dir
doskey .. = cd ..

und platzieren Sie es in einem der Verzeichnisse in Ihrem Pfad. Nennen Sie es etwas kurz wie a.cmd , also wenn Sie cmd öffnen Sie geben ein Aliase zu laden.

Wenn die Eingabe von aund das Drücken von Enterzu viel Arbeit scheint, werfen Sie Folgendes in Ihr AutoHotkey- Skript:

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

Aliase automatisch laden :

Sie können alle Verknüpfungen in cmd ändern, um auf zu zeigen %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd, und sie C:\path\to\aliases.cmddurch den Speicherort Ihrer Aliase-Datei ersetzen . Wenn Sie es normalerweise über die Run-Box ausführen, haben Sie folgende Möglichkeiten:

  • Benennen Sie die ausführbare Datei cmd in cmd2.exe um und ersetzen Sie sie durch ein Skript oder eine andere ausführbare Datei, die den obigen Befehl startet (ich würde diese Methode nicht wirklich empfehlen, da viele Apps von cmd abhängen).
  • Erstellen Sie ein Batch-Skript und nennen Sie es beispielsweise cmda (cmd with aliases). Lassen Sie es den obigen Befehl starten und platzieren Sie dieses Batch-Skript an einer beliebigen Stelle in Ihrem Pfad.
John T
quelle
1
+1 SCHÖN !!! Seit Jahren nicht mehr gesehen Doskey (oder erinnert) ... (das Spielen! Erinnerungen in meinem Kopf Song!)
William Hilsum
19
Hier ist kein AutoHotkey-Skript erforderlich. Windows bietet die Möglichkeit, eine Batchdatei bei jedem Start von cmd.exe automatisch auszuführen: technet.microsoft.com/en-us/library/cc779439(WS.10).aspx Ich konfiguriere sie so, dass sie auf c: \ dev \ autorun.bat verweist Hier werden Doskey-Makros geladen und andere nützliche Dienstprogramme ausgeführt.
Dan Fabulich
Ich bin wirklich überrascht, dass niemand PowerShell vorgeschlagen hat, es ist verdammt gut.
Eddie B
Funktionieren die definierten Makros in der Win + R (Run) Box?
ZEE
38

Es ist ganz einfach:

  1. Erstellen Sie eine Datei mit Aliasen, z. B. c: \ bin \ aliases :

    ls=dir /ONE $*
    cd=cd /d $*
    python=python -ic "" 
    ps=tasklist $*
    kill=taskkill /IM $*
    
  2. Erstellen Sie eine Datei mit allem, was Sie beim Starten von cmd.exe ausführen möchten, einschließlich des Ladens der Aliase mit doskey, z. B. c: \ bin \ cmd_autoruns.cmd :

    @echo off
    cls
    color 0A
    doskey /macrofile=c:\bin\aliases
    
  3. Erstelle und starte einmal eine Batch-Datei (zB set_cmd_autorun.cmd ), die den Command Processor- AutorunSchlüssel auf cmd_autoruns.cmd setzt :

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

Alternativ zu set_cmd_autorun.cmd können Sie auch eine .reg-Datei wie die folgende erstellen und mit einem Doppelklick zusammenführen:

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"
user29888
quelle
'Farbe OA' sollte wahrscheinlich 'Farbe 0A' sein.
csnullptr
1
Sie benötigen nur die "Autorun"="..."Zeile unter der [HKEY_...]Zeile, es sei denn, Sie möchten auch die anderen Tasten explizit festlegen.
c24w
5

Meine Antwort ist ähnlich wie die von Vriolk

Ich habe eine .bat-Datei erstellt, die meine Makros enthält (z. B. c: \ winscripts \ autoexec.bat):

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

und dann an einer cmd-Eingabeaufforderung "cmd /?" So finden Sie den zu bearbeitenden Registrierungsschlüssel für die automatische Ausführung von cmd:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun
  und / oder
HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun

Fügen Sie mit regedit den Pfad für Ihre Makro-Batch-Datei zum AutoRun-Wert hinzu (fügen Sie den AutoRun-Schlüssel hinzu, wenn er nicht vorhanden ist):

c: \ winscripts \ autoexec.bat

Wenn Sie jetzt "cmd" über die Eingabeaufforderung Start-> Ausführen ausführen, wird diese autoexec.bat ebenfalls ausgeführt und erstellt die Doskey-Makros für Sie.

Im Übrigen enthält whereis.cmd Folgendes:

@für %%e in (% PATHEXT%) @für %%i in (% 1 %%e) @wenn NICHT "%% ~ $ PATH: i" == "" %% ~ $ PATH: i

Dadurch wird Ihre PATH-Variable nach dem von Ihnen angegebenen Begriff durchsucht:

c:> wo ist javaw
c: \ jdk \ bin \ javaw.exe
andematt
quelle
Übrigens whereiskönnen Sie anstelle von Hack whereeinen eingebauten Befehl verwenden
Dheeraj Bhaskar
1

Sie können CMD-Dateien erstellen und sie an einem beliebigen Ort in% PATH% ablegen (z. B. C: \ Windows). So verwenden Sie Ihren Webalias als Beispiel:

@C:
@cd \inetpub\wwwroot

Würde etwas machen wie:

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

Mir ist keine Möglichkeit bekannt, eine flache .aliases-Stildatei zu erstellen.

djhowell
quelle
1

Eine sehr schnelle und unkonventionelle Möglichkeit, eine fertige Verknüpfung zu erstellen, die keinen großen Aufwand erfordert, besteht darin, eine nach dem Alias ​​benannte Batchdatei in einem der Verzeichnisse zu erstellen, die Teil der Umgebungsvariablen PATH sind. Zum Beispiel wollte ich Notepad ++ über einen Alias ​​aufrufen, also habe ich npp.bat in C: \ WINDOWS erstellt, das Folgendes enthielt:

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

Der Befehl npp kann jetzt von jeder cmd-Shell aus verwendet werden, ohne dass Autorun-Dateien und / oder Exkursionen in die Registrierung erforderlich sind

hallo_erde
quelle
0

So habe ich es mit einem schnellen Python-Skript gemacht:

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()

Entschuldigung für die schlechte Skripterstellung, aber die Verwendung ist ganz nett, imo. Platziere es irgendwo in deinem Pfad, füge .py zu deinem PATHEXT hinzu und füge auch c: \ aliases zu deinem PATH hinzu (oder ändere es, was auch immer passt), und benutze dann:

alias <command> <action>

alias (Ja, nein =, obwohl es nicht schwer wäre, eine .split-Datei hinzuzufügen) und:

alias -p <command or part of>

Um anzuzeigen, was etwas ist.

Hackish, aber dumm nützlich. Es gibt ein äquivalentes Unalias-Skript, aber ich bin sicher, dass Sie dieses herausfinden können.

edit: Dies erfordert natürlich Python, das auf v26 geschrieben wurde, aber wahrscheinlich in allen neueren Versionen funktioniert. Nach wie vor sorry für die qualität :)

edit2: Eigentlich wäre sowas doch besser, das Doskey-Zeug zu ergänzen. Sie können cmd auch mit dem Autorun-Registrierungsschlüssel Startbefehle hinzufügen, damit das System sauberer wird.

Phoshi
quelle
1
Nette Lösung, wenn auch etwas übertrieben für meine Bedürfnisse.
Pops
Tatsächlich ist es. Ich mag gerade Kontrolle haben über , wie mein Zeug funktioniert, ist alles: P
Phoshi