Doskey für zusammengesetztes Kommando

32

Doskey arbeitet in modernen Windows-Versionen, um Aliase für einzelne Befehle festzulegen, z doskey foo=bar.

Es gibt ein kleines Problem bei der Verwendung für zusammengesetzte Befehle wie, doskey foo=bar & bazda dies als interpretiert wird (doskey foo=bar) & baz. Die offensichtliche Lösung wäre, explizite Klammern hinzuzufügen, doskey foo=(bar & baz)aber aus irgendeinem Grund funktioniert dies nicht und doskey foo="bar & baz"auch nicht.

Gibt es eine Möglichkeit, dies zu tun?

Wallace
quelle

Antworten:

39

Entkomme dem kaufmännischen Und.

foo=bar ^& baz
Bis auf weiteres angehalten.
quelle
19

Verwenden Sie $Tzum Trennen von Befehlen:

doskey foo = bar $ T baz
doskey cpdel = kopiere $ 1 $ 2 $ T del $ 1

von doskey /?:

$ T Befehlstrennzeichen. Ermöglicht mehrere Befehle in einem Makro.
John T
quelle
7

Um die Antwort von Dennis Williamson (etwas) zu ergänzen , können Sie sich auch aus dem Pipe-Zeichen entfernen, um Befehle weiterzuleiten! Zum Beispiel wollte ich einen Befehl, der Sachen in die Zwischenablage kopiert. Aufgrund der Art COPYund Weise, wie es interpretiert wird, müssen Sie einen doof aussehenden Befehl ausführen, um den von Ihnen angegebenen Text tatsächlich zu kopieren, ohne dass eine neue Zeile folgt.

Um ein Makro zum Kopieren in die Zwischenablage zu definieren, können Sie die Pipe mit ^:

doskey cc=echo^|set /p=$*^|clip

Nach Ausführung des Befehls cc heyhaben Sie jetzt heyin die Zwischenablage kopiert!

CoolOppo
quelle
Ich habe mich auch gefragt, wie ich das Kopieren des Zeilenumbruchs verhindern kann! Vielen Dank.
Alex Vallejo
7

Um zu den vorherigen Antworten hinzuzufügen, können Sie auch Folgendes tun:

mybatfile.cmd

    doskey /macrofile=aliases.txt

aliases.txt

    foo = bar & baz
    cpdel = kopiere $ 1 $ 2 $ T del $ 1
    cc = echo | set / p = $ * | clip

Beachten Sie, dass in der Makrodatei kein Escapezeichen (Pipe / Ampersand) erforderlich ist und Sie mehrere Aliase in einem Aufruf definieren können.

Spiritpyre
quelle