Buat DOSKEY permanen di Windows cmd

9

Saya pikir judulnya cukup jelas.

Pertanyaannya adalah bagaimana saya bisa membuat alias di cmd Windows yang juga akan berfungsi setelah saya menutup dan kemudian membukanya kembali. Misalnya saya ingin alias dipanggil ipuntuk memanggil perintah ipconfigatau alias ls -luntuk memanggil Dir.

Sistem operasi saya adalah Windows 10, jika itu membuat perbedaan.

nick zoum
sumber

Jawaban:

11

Buat file definisi makro , misalnya di notepad; beri nama sesuka hati dan simpan di mana saja (misalnya, dalam contoh berikut saya menggunakan nama file macros.doskeydi d:\bat\folder).
Atau, doskey /macros>d:\bat\macros.doskeyperintah akan mencantumkan semua definisi makro saat ini ke dalam d:\bat\macros.doskeyfile.
Contoh file definisi makro bisa sebagai berikut (perhatikan bahwa ==>prompt perintah saya ditentukan oleh prompt $Q$Q$G$Sperintah ):

==> type d:\bat\macros.doskey
ls=dir /B $1 
ip=ipconfig $*

Kemudian, perintah selanjutnya harus melakukan pekerjaan:

==> reg add "HKCU\Software\Microsoft\Command Processor" /v Autorun /d "doskey /macrofile=\"d:\bat\macros.doskey\"" /f
The operation completed successfully.

==> reg query "HKCU\Software\Microsoft\Command Processor" /v Autorun

HKEY_CURRENT_USER\Software\Microsoft\Command Processor
    Autorun    REG_SZ    doskey /macrofile="d:\bat\macros.doskey"

Untuk penjelasan, baca cmd /?:

Jika /DTIDAK ditentukan pada baris perintah, maka ketika CMD.EXE mulai, itu mencari variabel REG_SZ/ REG_EXPAND_SZregistri berikut , dan jika salah satu atau keduanya hadir, mereka dieksekusi terlebih dahulu.

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

dan / atau

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

Penafian : beberapa AutoRunpengaturan dapat terjadi dalam keadaan tidak terlihat - untuk perilaku yang tidak diinginkan, misalnya seperti yang dijelaskan dalam Gotcha Tersembunyi: Pengaturan AutoRun dari prosesor perintah

Baca Simpan dan pulihkan definisi makro ; Anda dapat menyiapkan macros.cmdfile skrip yang valid dalam satu langkah:

==> >macros.cmd (@for /F "delims=" %G in ('doskey /macros') do @echo DOSKEY %G)

==> type macros.cmd
DOSKEY ip=ipconfig $*
DOSKEY ls=dir /B $1

==>

Harap diingat bahwa Anda tidak dapat menjalankan makro Doskey dari file batch .

JosefZ
sumber
@nickzoum maaf saya tidak bisa lebih spesifik; silakan lihat jawaban yang diperbarui.
JosefZ
baris terakhir, mengapa kita tidak bisa, dan apa yang bisa kita lakukan agar berfungsi?
v.oddou
@ v.oddou, silakan baca doskey.exe dan makro file Batch serta kedua tautan bermanfaat ke dostips.com di bawah ini di yang terakhir.
JosefZ
1
PERINGATAN: Path tidak dapat relatif terhadap file, itu harus absolut dan file harus terus ada di sana
Hakaishin
7
  1. Buat file untuk menyimpan makro Anda (DOSKEYs).
    "C: \ bat \ macros.doskey"

    ls=dir $* $T
    up=cd.. $T
    ex=exit $T
    np=notepad
    
  2. Buka editor registri.

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\
  3. Klik kanan dan tambahkan sub-kunci "String Value" baru. Beri nama Autorun.
    Klik kanan -> Baru -> Nilai String

  4. Klik kanan dan Ubah data Nilai.
    Klik kanan -> Ubah -> Nilai data -> DOSKEY /MACROFILE="C:\bat\macros.doskey"
  5. Baik untuk pergi.

† Perhatikan bahwa file tidak harus disimpan sebagai file .doskey.
† Perhatikan juga bahwa token $Tdiperlukan jika Anda membuat banyak DOSKEY.

John DeBord
sumber
1
Tampaknya $Tini hanya diperlukan jika beberapa perintah digunakan dalam satu makro DOSKEY. Anda menggunakan $Tuntuk memisahkan perintah, mirip dengan menggunakan &dalam file batch.
Melston