Doskey untuk perintah majemuk

32

Doskey bekerja di versi modern Windows untuk mengatur alias untuk perintah tunggal, mis doskey foo=bar.

Ada sedikit masalah ketika mencoba menggunakannya untuk perintah majemuk seperti doskey foo=bar & bazkarena ini ditafsirkan sebagai (doskey foo=bar) & baz. Perbaikan yang jelas adalah dengan menambahkan tanda kurung eksplisit, doskey foo=(bar & baz)tetapi untuk beberapa alasan ini tidak berhasil, dan doskey foo="bar & baz"tidak berhasil.

Apakah ada cara untuk melakukan ini?

rwallace
sumber

Jawaban:

39

Lepaskan ampersand.

foo=bar ^& baz
Dijeda sampai pemberitahuan lebih lanjut.
sumber
19

Gunakan $Tuntuk memisahkan perintah:

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

dari doskey /?:

$ T Separator perintah. Mengizinkan beberapa perintah dalam makro.
John T
sumber
7

Untuk menambahkan jawaban Dennis Williamson , Anda juga dapat melarikan diri dari karakter pipa untuk mengirim perintah pipa! Misalnya, saya ingin perintah yang menyalin barang ke clipboard. Karena cara COPYakan menafsirkannya, Anda perlu melakukan perintah mencari konyol untuk benar-benar menyalin teks yang Anda tentukan tanpa diikuti oleh baris baru.

Untuk menentukan makro untuk disalin ke clipboard, Anda dapat melarikan diri dari pipa dengan ^:

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

Setelah eksekusi perintah cc hey, Anda sekarang akan heymenyalin ke clipboard!

CoolOppo
sumber
Saya juga bertanya-tanya bagaimana cara mencegah salinan karakter baris baru! Terima kasih.
Alex Vallejo
7

untuk menambah jawaban sebelumnya, Anda juga dapat melakukan ini:

mybatfile.cmd

    doskey /macrofile=aliases.txt

aliases.txt

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

perhatikan bahwa di dalam macrofile, tidak perlu keluar dari pipa / ampersand dan Anda bisa mendefinisikan banyak alias dalam satu panggilan.

Spiritpyre
sumber