Buat alias di Windows XP

54

Kembali ke sekolah, saya dulu punya file .login di sepanjang baris

alias ll = ls -l  
alias dir = ls -Fhl  
alias web = cd ~/public/public_www/development  

Saya ingin melakukan hal semacam itu dengan kotak XP saya di sini di tempat kerja, tetapi sebagian besar sumber daya yang saya temukan online tampak cukup rumit dan berat. Apakah ada cara untuk melakukan ini yang tidak melibatkan mucking dalam registri atau menjalankan file batch besar?

Alasan asli saya untuk menanyakan hal ini adalah saya hanya perlu baris perintah untuk satu perintah dalam satu folder tertentu, dan saya ingin dapat membuka folder itu dengan cepat ketika saya meluncurkan baris perintah. Tetapi jawaban yang diterima untuk pertanyaan ini sangat baik sehingga saya memutuskan untuk bertanya tentang masalah asli saya sebagai pertanyaan terpisah: Ubah ke folder mulai default untuk command prompt Windows .

Pops
sumber
Opsi cepat & kotor adalah dengan hanya menambahkan folder ke PATHvariabel. Klik kanan Komputer Saya , pilih Properti , pergi ke Tingkat Lanjut , lalu Variabel Lingkungan . Info lebih lanjut: stackoverflow.com/a/20773224/722036
aexl

Jawaban:

84

Sepertinya tidak banyak orang yang tahu tentang itu, tetapi Anda dapat menggunakan doskeyalat makro bawaan, satu-satunya masalah adalah itu tidak menyimpan. Ada banyak cara untuk mengatasi ini.

pemakaian:

doskey ls=dir

lssekarang akan melakukan daftar direktori seperti dirakan.

Jika Anda ingin menggunakan argumen dengan perintah, gunakan sintaks ini:

doskey d=dir $*

Adapun solusinya untuk membuat mereka menghemat:

  • simpan semua alias ke file dalam format ini:
doskey ls = dir
doskey .. = cd ..

dan letakkan di salah satu direktori di jalur Anda. Beri nama itu sesuatu yang pendek seperti a.cmd , jadi ketika Anda membuka cmd Anda bisa mengetikkan a untuk memuat alias Anda.

Jika mengetik adan menekan Entertampaknya terlalu berhasil, masukkan ini ke skrip AutoHotkey Anda :

WinWaitActive, C:\WINDOWS\system32\cmd.exe
Send {a}{Enter}

Memuat alias secara otomatis :

Anda dapat mengubah semua pintasan ke cmd ke titik %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd, menggantikan C:\path\to\aliases.cmddengan lokasi file alias Anda. Jika biasanya Anda menjalankannya dari kotak jalankan, Anda dapat:

  • Ganti nama cmd yang dapat dieksekusi menjadi cmd2.exe misalnya, dan ganti dengan skrip atau executable lain yang meluncurkan perintah di atas (saya tidak akan merekomendasikan metode ini karena banyak aplikasi bergantung pada cmd)
  • Buat skrip batch dan beri nama cmda (cmd dengan alias) misalnya. Mintalah itu meluncurkan perintah di atas dan menempatkan skrip batch ini di suatu tempat di jalur Anda.
John T
sumber
1
+1 BAGUS !!! Belum pernah melihat (atau mengingat) Doskey selama bertahun-tahun! ... (Memainkan lagu kenangan di kepalaku!)
William Hilsum
19
Tidak perlu skrip AutoHotkey di sini. Windows menyediakan cara untuk AutoRun file batch setiap kali Anda meluncurkan cmd.exe: technet.microsoft.com/en-us/library/cc779439(WS.10).aspx Saya mengkonfigurasinya untuk menunjuk ke c: \ dev \ autorun.bat yang memuat makro doskey dan menjalankan utilitas praktis lainnya.
Dan Fabulich
Saya benar-benar terkejut tidak ada yang menyarankan PowerShell itu sangat bagus.
Eddie B
Apakah makro yang didefinisikan berfungsi dari kotak Win + R (Run) ???
ZEE
38

Ini sederhana seperti:

  1. Buat file dengan alias, misal c: \ bin \ alias :

    ls=dir /ONE $*
    cd=cd /d $*
    python=python -ic "" 
    ps=tasklist $*
    kill=taskkill /IM $*
    
  2. Buat file dengan semua hal yang ingin Anda jalankan ketika cmd.exe dimulai, termasuk memuat alias dengan doskey misalnya c: \ bin \ cmd_autoruns.cmd :

    @echo off
    cls
    color 0A
    doskey /macrofile=c:\bin\aliases
    
  3. Buat dan jalankan sekali file batch (mis. Set_cmd_autorun.cmd ) yang akan mengatur Autorunkunci Processor Perintah ke cmd_autoruns.cmd kami :

    reg add "hkcu\software\microsoft\command processor" /v Autorun /t reg_sz /d c:\bin\cmd_autoruns.cmd
    

Sebagai alternatif untuk set_cmd_autorun.cmd juga dimungkinkan untuk membuat file .reg seperti di bawah ini dan kemudian menggabungkannya dengan klik dua kali:

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"CompletionChar"=dword:00000009
"DefaultColor"=dword:00000000
"EnableExtensions"=dword:00000001
"PathCompletionChar"=dword:00000009
"Autorun"="c:\\bin\\cmd_autoruns.cmd"
user29888
sumber
'color OA' mungkin harus 'color 0A'.
csnullptr
1
Anda hanya perlu "Autorun"="..."garis di bawah [HKEY_...]garis, kecuali jika Anda ingin secara eksplisit mengatur kunci lain juga.
c24w
5

Jawaban saya mirip dengan jawaban vriolk

Saya membuat file .bat yang berisi makro saya (mis. C: \ winscripts \ autoexec.bat):

@doskey whereis = c: \ winscripts \ whereis.cmd $ *
@doskey ls = dir / b $ *
@doskey l = dir / od / p / q / tw $ *

dan kemudian dari prompt cmd lari "cmd /?" untuk menemukan kunci registri untuk diedit untuk autorun cmd:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun
  dan / atau
HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun

menggunakan regedit, tambahkan path untuk file kumpulan makro Anda ke nilai AutoRun (tambahkan kunci AutoRun jika tidak ada di sana):

c: \ winscripts \ autoexec.bat

sekarang setiap kali Anda menjalankan "cmd" dari Start-> Run prompt, autoexec.bat ini juga akan berjalan dan membuat makro doskey untuk Anda.

Omong-omong, whereis.cmd berisi ini:

@for %% e in (% PATHEXT%) do @for %% i in (% 1 %% e) do @jika TIDAK "%% ~ $ PATH: i" == "" echo %% ~ $ PATH: i

yang mencari variabel PATH Anda untuk istilah yang Anda berikan:

c:> whereis javaw
c: \ jdk \ bin \ javaw.exe
andematt
sumber
BTW bukannya whereisretas yang bisa Anda gunakan whereyang merupakan perintah
bawaan
1

Anda dapat membuat file .cmd dan menempatkannya di suatu tempat di% PATH% Anda (seperti C: \ Windows). Untuk menggunakan alias web Anda sebagai contoh:

@C:
@cd \inetpub\wwwroot

Akan melakukan sesuatu seperti:

M:\> web
C:\inetpub\wwwroot>

Saya tidak mengetahui cara untuk membuat file gaya .aliases datar.

djhowell
sumber
1

cara yang sangat cepat dan kotor untuk memiliki pintasan yang siap, yang tidak memerlukan banyak keributan - adalah membuat file batch yang dinamai alias, di salah satu direktori yang merupakan bagian dari variabel lingkungan PATH. Misalnya, saya ingin memohon Notepad ++ melalui alias, jadi saya membuat npp.bat di C: \ WINDOWS yang berisi yang berikut:

"c:\Program Files\Notepad++\notepad++.exe" %1 %2 %3 %4 %5

sekarang perintah npp dapat digunakan dari cmd shell, tanpa file autorun dan / atau kunjungan ke registri

hello_earth
sumber
0

Cara saya melakukannya adalah dengan skrip python cepat:

import sys
import string
import os
import glob

def listAll():
        for infile in glob.glob("c:\\aliases\\*.bat"):
            fileName = infile
            fileName = fileName[len("c:\\aliases\\"):len(fileName)-4]
            fileContents = open("c:\\aliases\\" + fileName + ".bat", "r")
            fileContents.readline()
            fileContentString=fileContents.readline()
            fileName += " is aliased to "
            fileName += fileContentString[0:len(fileContentString)-3]
            print fileName

def listSome(which):
        for infile in glob.glob("c:\\aliases\\*.bat"):
            fileName = infile
            fileName = fileName[len("c:\\aliases\\"):len(fileName)-4]
            fileContents = open("c:\\aliases\\" + fileName + ".bat", "r")
            fileContents.readline()
            fileContentString=fileContents.readline()
            if fileName.find(which)==0:
                fileName += " is aliased to "
                fileName += fileContentString[0:len(fileContentString)-3]
                print fileName

if len(sys.argv)>1:
    if sys.argv[1]!="-p":
        file = open("c:\\aliases\\"+sys.argv[1]+".bat", "w")
        file.write("@ECHO OFF\n")
        counter=0
        totalInput=""
        counter=0
        for arg in sys.argv:
            if counter > 1:
                totalInput+= arg + " "
            counter+=1

        if totalInput.find(".exe")!=-1:
            file.write("\"")

        counter=0

        for arg in sys.argv:
            if counter > 1:
                file.write(arg)
                if sys.argv[1]==sys.argv[2]:
                    if counter==2:
                        file.write(".exe")
                temparg=str(arg)
                if temparg.find(".exe")!=-1:
                    file.write("\"")
                file.write(" ")
            counter+=1
        file.write("%*")

        print "Aliased " + sys.argv[1] + " to " + totalInput
    else:
        if len(sys.argv)>2:
            listSome(sys.argv[2])
        else:
            listAll()
else:
    listAll()

Permintaan maaf untuk skrip yang buruk, tetapi penggunaannya cukup bagus, imo. Letakkan di suatu tempat di jalur Anda, tambahkan .py ke PATHEXT Anda, dan tambahkan juga c: \ alias ke PATH Anda (atau ubah, sesuai keinginan), lalu gunakan:

alias <command> <action>

to alias (Yap, no =, meskipun tidak akan sulit untuk menambahkan .split di sana), dan:

alias -p <command or part of>

Untuk menampilkan apa itu sesuatu.

Meretas, tapi sangat berguna. Ada skrip unalias yang setara, tapi saya yakin Anda bisa menyelesaikannya.

sunting: Ini jelas membutuhkan python, ditulis pada v26 tetapi mungkin akan bekerja dalam apa pun yang terbaru. Seperti sebelumnya, maaf untuk kualitasnya :)

sunting2: Sebenarnya, sesuatu seperti ini tetapi untuk menambah hal-hal doskey akan lebih baik. Anda dapat menambahkan perintah startup ke cmd dengan kunci registri autorun juga, sehingga bisa menjadi jauh lebih bersih.

Phoshi
sumber
1
Solusi yang bagus, meskipun sedikit berlebihan untuk kebutuhan saya.
Pops
Memang itu. Saya hanya suka memiliki kontrol atas bagaimana barang saya bekerja, itu saja: P
Phoshi