Befehls-Aliase in der Eingabeaufforderung?


18

Wie kann ich in der Windows-Eingabeaufforderung Befehls-Aliase erstellen, wie ich es tun würde bash?

Ich habe es doskeyin einem Forenthread herausgefunden , damit ich etwas machen kann wie:

doskey ls=dir /b

... und jetzt verhält sich der Befehl lsetwas ähnlicher wie lsunter Unix. (Ich tippe lsso oft ein cmd, dass es nicht mal lustig ist.)

Aber wie bringe ich das dazu, zwischen den Sitzungen zu bleiben? Es verschwindet, wenn ich das nächste Mal öffne cmd.exe. (Gibt es so etwas .bash_profile?)


Es tut uns leid, das Thema zu deaktivieren, aber Sie können von der Installation einer Kopie von cygwin profitieren und alle Unix-Tools auf Ihrer Handballenauflage haben
bubu

Ja, das würde ich gerne tun, aber ich denke nicht, dass dies eine Option ist (und möglicherweise mehr Arbeit bedeutet, als es wert ist). Meine Hauptmaschinen sind Linux und OS X - ich teste gerade einige Programme unter Windows.
Benjamin Oakes

1
Es gibt nicht viel zu tun. Sie müssen lediglich cygwin.com/setup.exe installieren. Einfach herunterladen und auf Weiter klicken. es ist alles da und sehr einfach. Es gibt auch nicht viel zu konfigurieren.
Bubu

Hrm ... nun, ich werde es ausprobieren. Die Maschine hat aber schon viele Probleme ...;)
Benjamin Oakes

4
Sie führen DOS nicht aus, es sei denn, Ihr MS-DOS ist Version 6.22 oder niedriger. Durch Ihre Erwähnung von cmd.exe gehe ich davon aus, dass Sie über die grundlegende WinNT / 2k / XP / etc-Befehlsshell sprechen.
Quack Quixote

Antworten:


0

cygwin kann in diesem Fall verwendet werden, obwohl dies keine themenbezogene Antwort ist.

http://www.cygwin.com/ CygWin
Download: http://cygwin.com/setup.exe

Um in Windows einfach darauf zuzugreifen, können Sie c: \ cygwin \ bin in Ihren Pfad einfügen.

Beachten Sie, dass es einige Befehle gibt, die nicht mit der Windows-Software übereinstimmen, z. B. find (1) vs find.exe - find (1) listet alle Dateien und Unterverzeichnisse auf, während find.exe wie grep funktioniert.

Eine andere Option ist der Zugriff

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

Auschecken

 cmd.exe /? 
für mehr Details


Hrm ... es scheint keinen meiner Windows-Pfade zu verwenden ... Ich muss später damit herumspielen, denke ich. (Ich habe cygwin noch nie ernsthaft benutzt.) Vielen Dank für Ihre Hilfe.
Benjamin Oakes

Durch Hinzufügen des Cygwin-Pfads zur Windows-Umgebungsvariablen path können Sie die Tools in der Cygwin-Umgebung in cmd.exe verwenden. Beachten Sie nur, dass es Vorbehalte gibt, z. B. Find.exe kollidiert mit dem von Cygwin bereitgestellten Find-Befehl.
Bubu

Warum die Untervote? Ich habe nur keine Ahnung.
Bubu

34

Es ist ziemlich einfach, permanente Aliase in der Windows-Eingabeaufforderung mithilfe der @DOSKEYBefehls- und HKCU\Software\Microsoft\Command ProcessorAutorun-Option einzurichten.

Schnelle Schritt-für-Schritt-Anleitung:

  1. Erstellen Sie eine neue Batch-Datei und rufen Sie sie auf Alias.bat. Kopieren Sie den folgenden Text, und fügen Sie ihn ein. TIPP: Ich empfehle, einen C:\BinOrdner für alle Befehlszeilentools zu erstellen .
  2. Öffnen Sie das Register HKEY_CURRENT_USER\Software\Microsoft\Command Processor.
  3. Fügen Sie einen benannten Zeichenfolgenwert hinzu , Autorunund legen Sie den Wert auf den absoluten Pfad der Alias.batDatei fest.
  4. Getan.

Diese Batchdatei wird jedes Mal ausgeführt, wenn Sie eine Eingabeaufforderung öffnen.

Inhalt von 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 $* )

Jetzt können Sie alias(ie DOSKEY /MACROS) eingeben, um die aktuelle Liste der Aliase / Makros anzuzeigen.

Sie können nur für die aktuelle Sitzung neue Aliase hinzufügen alias name=command.


1
Einfach, leicht zu aktualisieren, sobald Setup, ich mag dieses sehr!
Urda

Leider habe ich die Verwendung dieses Alias ​​inzwischen eingestellt, da der @DOSKEYBefehl beim Beenden von Autodesk Maya 2010 einen Absturz verursacht. Wahrscheinlich gibt es eine Problemumgehung, z. B. die Überprüfung, ob der übergeordnete Prozess Maya ist.
Dennis

9

Auch eine Art Off-Topic -

Verwenden Sie PowerShell anstelle der cmd.exeBefehlszeile. Die gute Nachricht ist, dass PowerShell .bash_profilegenau wie die cmd.exeBefehlszeile ausgeführt wird. Es kommt mit einer eingebauten Alias-Generierungsfunktion. Die schlechte Nachricht ist, dass es eine gewisse Lernkurve gibt, wenn Sie etwas Komplizierteres als einfache cmd.exeBefehle ausführen möchten .

Übrigens lswird als ein Alias ​​von " dirdirekt ab Werk" definiert.


Warum hat mir noch niemand gesagt, dass ich Power-Shell benutzen soll? Es ist so viel besser für so viele Dinge.
Andres

3

Es gibt einen Registrierungseintrag, unter HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRundem Sie einen Befehl ausführen können, wenn Sie eine cmd-Eingabeaufforderung starten. Dies beinhaltet eine Batch-Datei.


Möglicherweise möchten Sie auf HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun verweisen, da andere Benutzer nicht dieselbe Benutzer-ID haben wie Sie.
Bubu

@bubu: Oh, sehr wahr, sorry. Ich fand das durch Durchsuchen meiner Registrierung, dachte nicht.
Phoshi

1

Ich empfehle, DOS-Versionen dieser Befehle direkt über diesen Link zu installieren .

Einfach, leicht, effizient usw. Ich benutze es jetzt schon eine Weile. Macht mich glücklich! Cygwin ist ein bisschen groß für das Wesentliche, was ich brauche.


0

Versuchen Sie, sie in autoexec.bat abzulegen. Ich bin nicht sicher, du musst es versuchen. Setzen Sie autoexec.bat selbst in C: \


Scheint nicht zu funktionieren ...
Benjamin Oakes


0

Ich werde für einen Moment ein Nekromant sein und diesen Faden von den Toten erheben. Die Antwort war für mich nicht zufriedenstellend. Ich wusste, dass es einen besseren Weg gibt. Ich versuchte, Fledermausfeilen zu erstellen und einzuschließen, und versuchte herauszufinden, wie man den Spaghetti-Ball zum Laufen bringt. Sowieso zurück zu Google ging ich ..

Ich habe das auch gefunden. Wie man neue DOS-Alias ​​/ -Befehle hinzufügt und eine Tastenkombination für ein Admin-DOS erstellt. Es funktioniert großartig, es sollte unter 98-7 funktionieren (irgendwie witziges Nummerierungssystem, aber hey, es ist Windows). Ich hoffe es hilft denen in diesem Thread und denen, die Google auf diese Weise sendet.

Dieser Weg ist nicht so einfach wie Alias ​​und auch nicht Doskey. Einmal eingerichtet ist dies ungefähr der gleiche Aufwand.

Ich werde auch hinzufügen, dass Teile davon, die mit Dennis Williamsons Antwort verschmolzen sind, viel besser sind. Sie können Shell-Umgebungen für mehrere Versionen derselben Anwendung haben, z. B. PHP 4 für Ihre alten Skripte und PHP 5 für Ihren Testserver.

Jedenfalls hat das für mich viel besser geklappt.


0

Lösung durch Festlegen einer PATH-Umgebung

Erstelle eine ls.c Datei

Geben Sie den folgenden Code ein

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

in ls.c und kompiliere die Datei:

$gcc ls.c -o ls

Es wird eine ausführbare Datei ls.exe erstellt

Erstellen Sie ein Verzeichnis und nennen Sie es cmdline_tools

$mkdir cmdline_tools

Kopieren Sie ls.exe in das Verzeichnis

Legen Sie den Pfad des Verzeichnisses in der PATH-Umgebung fest. [Kopieren Sie den Pfad des Verzeichnisses und fügen Sie ihn in den PATH ein.]

C:/cmdline_tools

Öffnen Sie Ihre cmd.exe und geben Sie

$ ls

Es funktioniert als dir Befehl. Sie können auf die gleiche Weise auch für andere Befehle vorgehen. Wenn nicht, lass es uns wissen.


0

CMD mit Aliasen / Funktionen von doskey und bashrc (von cygwin> bash), Schrägstriche funktionieren auch in cmd (ab win7)

  1. Erstellen Sie eine Verknüpfung zu cmd, um cmdrc.cmd zu verwenden

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

2 C:> cat% 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.