Früher habe ich an Bash gearbeitet und viel von Alias profitiert. Gibt es eine äquivalente Möglichkeit in der Windows-Befehlszeile?
Ich möchte keine Linux-Umgebung simulieren, daher ist Cygwin keine Wahl. Ich brauche nur eine Abkürzung für einen sehr langen Befehl, wie cd a_very_long_path
.
windows
command-line
StarPinkER
quelle
quelle
doskey
(lassen Sie sich nicht durch den Namen täuschen, es ist nicht der alte MS DOS-Doskey). Verwenden Siedoskey /?
für weitere Informationen. Abgesehen davon ist diese Frage leider hier nicht zum Thema.Antworten:
Wie Christian.K in seinem Kommentar sagte, kann der DOSKEY-Befehl verwendet werden, um Makros zu definieren, die zu Aliasen analog sind.
Makroparameter werden in der Definition über
$
vorangestellte Positionen referenziert :$1
durch$9
und$*
für alle.Weitere Informationen finden Sie in der Dokumentation zu doskey technet oder geben Sie
doskey /?
oderhelp doskey
in der Befehlszeile ein.DOSKEY-Makros weisen jedoch schwerwiegende Einschränkungen auf:
someMacro|findstr '^'
unddir|someMacro
nicht.for /f %A in ('someMacro') do ...
schlägt fehlDie Einschränkungen sind so schwerwiegend, dass ich DOSKEY-Makros selten verwende.
Natürlich können Sie Batch-Skripte anstelle von Makros erstellen und sicherstellen, dass sich die Skriptpositionen in Ihrem PATH befinden. Dann müssen Sie jedoch jedem Skript CALL voranstellen, wenn Sie das Skript in einem anderen Skript verwenden möchten.
Sie können einfache "Makros" für lange und häufig verwendete Befehle erstellen, aber die Syntax ist etwas umständlich einzugeben, da Sie das "Makro" erweitern müssen, wenn Sie es verwenden möchten.
Definition:
Verwendung (über die Befehlszeile oder das Skript)
quelle
Sie können ein Stapelskript erstellen und in Ihrem Pfad speichern.
Unter Linux würden Sie ein Skript erstellen und es dem Ordner hinzufügen,
~/bin
unter Windows können Sie dasselbe tun.Fügen Sie
%USERPROFILE%\bin
IhrerPATH
Umgebungsvariable hinzu. Speichern Sie dann Ihre Skripte dort.quickcd.cmd
Jetzt können Sie
quickcd
in der Befehlszeile eingeben.Es kann auch innerhalb eines Skripts mit der
call
Funktion aufgerufen werdenquelle
Microsoft Windows [Version 10.0.17134.648]
/d
Flagge hinzufügen zuCD
subst
Wenn Sie wirklich versuchen, so etwas zu umgehen:
Mit dem
subst
Befehl können Sie diesen langen Pfad einem separaten Laufwerksbuchstaben zuordnenWenn Sie dann in diesen Ordner springen möchten, können Sie einfach
m:
in der Befehlszeile eingeben.Der Vorteil gegenüber
doskey
ist, dass es in allen Stapelverarbeitungsprogrammen funktioniert und in jedem Dateidialogfeld unter Windows angezeigt wird.Wenn Sie das Mapping nicht mehr wollen:
quelle
Sie könnten den gleichen Trick verwenden, den Windows verwendet: Setzen Sie eine Umgebungsvariable (oder nur eine Variable in einem Batch-Kontext), zum Beispiel gibt es eine Umgebungsvariable% windir% (und einige andere)
oder
was dasselbe tut. Alles, was Sie tun müssen, ist:
Danach können Sie (von wo auch immer Sie sind) Folgendes tun:
oder
oder was auch immer du willst.
quelle
Im Gegensatz zu Linux können in Windows-Aliase Argumente annehmen und Parameter erhalten, denen diese Argumente in ihrer Definition zugewiesen werden.
Der interne integrierte Befehl lautet doskey , dh, es handelt sich nicht um eine externe ausführbare Datei,
%SystemRoot%\System32
sondern um eine Funktion,cmd.exe
die sich selbst%SystemRoot%
oder%Windir%
beideC:\Windows
standardmäßig in einem Ordner befinden und auf diesen zeigen.Doskey definiert unter anderem Aliase. In der Windows-Terminologie werden Aliase als Makros bezeichnet. Zum Festlegen eines von Ihnen verwendeten Alias
Hier
$1
zeigt auf das erste Argument und$*
zeigt auf alle Argumente.Ich würde immer
$*
doppelte Anführungszeichen verwenden,$1
wenn es nur ein Argument gibt, um Leerzeichen auszulassen, die als Sonderzeichen behandelt werden, nämlich als Trennzeichen (für Befehle).Darüber hinaus können Sie Ihre definieren
AliaseMakros in einer separaten Datei, sagenLinuxAliases.macro
und dann beziehen sie mitAlle in der Datei definierten Aliase werden nur für die aktuelle Sitzung geladen , dh wenn Sie sich
exit
außerhalb descmd.exe
Prozesses befinden (auch als Shell und Eingabeaufforderung bezeichnet), sind sie verschwunden.Um dauerhafte Aliase zu haben, können Sie den vollständigen Befehl irgendwo in einen Regedit-Schlüssel eingeben, der entweder AutoRun oder AutoCommand oder ähnliches heißt, woran ich mich jetzt neben der internen Syntax der Makrodatei nicht erinnern kann: P
Hier sind die offiziellen und noch besseren Dokumentationen für den Befehl.
quelle
Ich habe einen solchen "Alias" speziell für das Wechseln des Verzeichnisses erstellt. Grundsätzlich habe ich eine Datei mit dem Namen erstellt
fav.bat
und in einem Ordner in PATH abgelegt (zB C: \ MyBatches):Dann kann ich sehr schnell zu jedem vordefinierten Ordner springen. Ich schrieb einen ganzen Artikel über diese Technik hier .
quelle
vorausgesetzt, Sie bleiben auf dem gleichen Laufwerk, dh nicht
D:
danncd D:\somedir\
benötigt.In meinem Fall enthält C: Systemdateien, aber die gesamte Arbeit befindet sich auf D:
2 Teile. Legen Sie zunächst einige Arbeitsverzeichnisse mithilfe einer Batchdatei fest.
Sagen wir localprofile.cmd . Sie können mehrere davon haben, führen Sie sie einfach nach Bedarf aus.
Verwenden Sie jetzt eine andere Befehlsdatei, um sich zu bewegen, basierend auf den Umgebungsvariablen, die Sie gerade festgelegt haben.
wd.cmd
Und ein bisschen wie ein Anwendungsbeispiel:
wd soll mir die Liste der mit Lesezeichen versehenen Verzeichnisse anzeigen. Es funktioniert, aber nicht sicher, warum ich diese "unerwartete CD" -Nachricht erhalte.
Regelmäßige .cmd-Chargen
Abgesehen von der Verzeichnisnavigation können Sie irgendwo in Ihrem PATH eine foo.cmd erstellen, die als Alias fungiert. Denken Sie daran, dass sich Cmd-Dateien im Gegensatz zu Linux / OSX-Shells auf Umgebungsvariablen und die Sitzung auswirken können, ohne dass Sie sie als Quelle angeben müssen.
Ich habe eine cdbin.cmd , um mich zu navigieren, zum Beispiel:
Und das ist eine Pseudo-grep grep.cmd
in Aktion (egal welche Sorte / + 2 / + 10 bedeutet)
D:\home\work\fb440.dumper>grep class *.py | sort /+2 /+10
quelle
Sie können doskey.exe verwenden , hier ein Beispiel:
Und jetzt, wenn Sie
qcd
dann tippen , wird es auf diesen Pfad cd .Hier ist einige Hilfe mit Doskey- Makros:
Das ist die einfachste Form, hier ein Beispiel:
und wenn Sie
word
die Ausgabe eingeben, ist:Sie können $ 1- $ 9 für Parameter verwenden, hier ein Beispiel:
und wenn Sie eingeben
npd
wird es öffnen Notizblock aber wenn wir gebennpd test.txt
wird es öffnen test.txt in Notizblock .Sie können $ * für alle Parameter verwenden, hier ist ein weiteres Beispiel:
und wenn Sie
prt This is short.
dann eingeben, wird die Ausgabe sein:Sie können $ T für mehrere Befehle verwenden. Hier ein Beispiel:
und wenn Sie
newline Hello and
dann eingeben, wird die Ausgabe sein:Ich hoffe, Sie verstehen.
quelle