Tạo bí danh trong Windows XP


54

Hồi đi học, tôi đã từng có một tập tin .login dọc theo dòng

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

Tôi muốn làm điều đó với hộp XP của tôi tại nơi làm việc, nhưng hầu hết các tài nguyên tôi tìm thấy trên mạng có vẻ khá phức tạp và nặng nề. Có cách nào để làm điều này mà không liên quan đến việc lén lút trong sổ đăng ký hoặc chạy một tệp bó lớn không?

Lý do ban đầu của tôi khi hỏi điều này là tôi chỉ cần dòng lệnh cho một lệnh trong một thư mục cụ thể và tôi muốn có thể nhanh chóng đến thư mục đó khi tôi khởi chạy dòng lệnh. Nhưng câu trả lời được chấp nhận cho câu hỏi này tốt đến mức tôi quyết định hỏi về vấn đề ban đầu của mình dưới dạng một câu hỏi riêng biệt: Thay đổi thư mục bắt đầu mặc định cho dấu nhắc lệnh của Windows .


Tùy chọn nhanh & bẩn; chỉ cần thêm thư mục vào PATH biến. Click chuột phải Máy tính của tôi , chọn Tính chất , đi đến Nâng cao , sau đó Biến môi trường . Thêm thông tin: stackoverflow.com/a/20773224/722036
aexl

Câu trả lời:


84

Không nhiều người dường như biết về nó, nhưng bạn có thể sử dụng doskey công cụ macro tích hợp, vấn đề duy nhất là nó không lưu. Có nhiều cách để làm việc xung quanh điều này mặc dù.

sử dụng:

doskey ls=dir

ls bây giờ sẽ làm một danh sách thư mục giống như dir sẽ.

Nếu bạn muốn sử dụng đối số với các lệnh, hãy sử dụng cú pháp này:

doskey d=dir $*

Đối với cách giải quyết để làm cho họ tiết kiệm:

  • lưu tất cả các bí danh vào một tệp ở định dạng này:
doskey ls=dir
doskey ..=cd ..

và đặt nó vào một trong các thư mục trong đường dẫn của bạn. Đặt tên ngắn gọn như a.cmd , vì vậy khi bạn mở cmd, bạn có thể gõ một để tải bí danh của bạn.

Nếu gõ một một và nhấn Đi vào dường như quá nhiều công việc, ném cái này vào Tự động kịch bản:

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

Đang tải bí danh tự động :

Bạn có thể thay đổi tất cả các phím tắt thành cmd để trỏ đến %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd, thay thế C:\path\to\aliases.cmd với vị trí của tập tin bí danh của bạn. Nếu bạn thường chạy nó từ hộp chạy, bạn có thể:

  • Đổi tên cmd thực thi thành cmd2.exe chẳng hạn, và thay thế nó bằng một tập lệnh hoặc một thực thi khác khởi chạy lệnh trên (Tôi thực sự không khuyến nghị phương pháp này vì rất nhiều ứng dụng phụ thuộc vào cmd)
  • Tạo một tập lệnh bó và gọi nó là cmda (cmd với bí danh) chẳng hạn. Có nó khởi chạy lệnh trên và đặt tập lệnh bó này ở đâu đó trong đường dẫn của bạn.

1
+1 TỐT ĐẸP !!! Không thấy (hoặc nhớ) Doskey trong nhiều năm! ... (Chơi kỷ niệm bài hát trong đầu tôi!)
William Hilsum

19
Không cần một kịch bản AutoHotkey ở đây. Windows cung cấp một cách để AutoRun một tệp bó bất cứ khi nào bạn khởi chạy cmd.exe: technet.microsoft.com/en-us/l Library / cc779439 (WS.10) .aspx Tôi định cấu hình nó để trỏ đến c: \ dev \ autorun.bat tải macro doskey và chạy các tiện ích tiện lợi khác.
Dan Fabulich

Tôi thực sự ngạc nhiên khi không ai đề xuất PowerShell rằng nó khá tốt.
Eddie B

Các macro được xác định có hoạt động từ hộp Win + R (Run) không ???
ZEE

38

Nó đơn giản như:

  1. Tạo một tệp có bí danh, ví dụ: c: \ bin \ bí danh :

    ls=dir /ONE $*
    cd=cd /d $*
    python=python -ic "" 
    ps=tasklist $*
    kill=taskkill /IM $*
    
  2. Tạo một tệp với tất cả những thứ bạn muốn chạy khi cmd.exe được khởi động, bao gồm tải các bí danh với liều ví dụ. c: \ bin \ cmd_autorun.cmd :

    @echo off
    cls
    color 0A
    doskey /macrofile=c:\bin\aliases
    
  3. Tạo và chạy một lần một tệp bó (ví dụ: set_cmd_autorun.cmd ) sẽ thiết lập Bộ xử lý lệnh Autorun chìa khóa của chúng tôi cmd_autorun.cmd :

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

Thay thế cho set_cmd_autorun.cmd thay vào đó, có thể tạo một tệp .reg như tệp bên dưới và sau đó hợp nhất nó với một cú nhấp chuột:

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"

'màu OA' có lẽ phải là 'màu 0A'.
csnullptr

1
Bạn chỉ cần "Autorun"="..." dòng dưới [HKEY_...] dòng, trừ khi bạn muốn đặt rõ ràng các phím khác.
c24w

5

Câu trả lời của tôi tương tự như của vriolk

Tôi đã tạo một tệp .bat có chứa các macro của tôi (ví dụ: c: \ woncripts \ autoexec.bat):

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

và sau đó từ một dấu nhắc cmd chạy "cmd /?" để tìm khóa đăng ký để chỉnh sửa cho autdun cmd:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
  and/or
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

sử dụng regedit, thêm đường dẫn cho tệp bó macro của bạn vào giá trị AutoRun (thêm khóa AutoRun nếu không có):

c:\winscripts\autoexec.bat

bây giờ bất cứ khi nào bạn chạy "cmd" từ dấu nhắc Start- & gt; Run, autoexec.bat này cũng sẽ chạy và tạo các macro doskey cho bạn.

Nhân tiện, whereis.cmd chứa cái này:

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

tìm kiếm biến PATH của bạn cho cụm từ bạn cung cấp:

c:>whereis javaw
c:\jdk\bin\javaw.exe

BTW thay vì whereis hack bạn có thể sử dụng where đó là một lệnh dựng sẵn
Dheeraj Bhaskar

1

Bạn có thể tạo các tệp .cmd và đặt chúng ở đâu đó trong% PATH% của bạn (chẳng hạn như C: \ Windows). Để sử dụng bí danh web của bạn làm ví dụ:

@C:
@cd \inetpub\wwwroot

Sẽ làm một cái gì đó như:

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

Tôi không biết bất kỳ cách nào để tạo một tệp kiểu .aliases phẳng.


1

một cách rất nhanh và bẩn để có một lối tắt sẵn sàng, không đòi hỏi nhiều phiền phức - là tạo một tệp bó được đặt tên theo bí danh, trong một trong các thư mục là một phần của biến môi trường PATH. Ví dụ: tôi muốn gọi Notepad ++ thông qua bí danh, vì vậy tôi đã tạo npp.bat trong C: \ WINDOWS có chứa thông tin sau:

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

bây giờ lệnh npp có thể được sử dụng từ bất kỳ shell cmd nào, không có tệp autorun và / hoặc du ngoạn đến registry


0

Cách tôi đã làm là với một kịch bản python nhanh:

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()

Xin lỗi vì kịch bản kém, nhưng cách sử dụng khá hay, imo. Đặt nó ở đâu đó trên đường dẫn của bạn, thêm .py vào PATHEXT của bạn và thêm c: \ aliases vào PATH của bạn (hoặc thay đổi nó, bất cứ bộ đồ nào), sau đó sử dụng:

alias <command> <action>

thành bí danh (Yep, no =, mặc dù sẽ không khó để thêm .split vào đó) và:

alias -p <command or part of>

Để hiển thị những gì là một cái gì đó.

Hackish, nhưng ngu ngốc hữu ích. Có một tập lệnh unalias tương đương, nhưng tôi chắc chắn bạn có thể làm việc đó.

chỉnh sửa: Điều này rõ ràng yêu cầu python, được viết trên v26 nhưng có thể sẽ hoạt động trong bất cứ điều gì gần đây. Như trước đây, xin lỗi về chất lượng :)

edit2: Trên thực tế, một cái gì đó như thế này nhưng để thêm vào công cụ doskey sẽ tốt hơn. Bạn cũng có thể thêm các lệnh khởi động vào cmd bằng khóa đăng ký tự động, để có thể sạch hơn nhiều.


1
Giải pháp tốt đẹp, mặc dù hơi quá mức cho nhu cầu của tôi.
Pops

Quả thực là như vậy. Tôi chỉ thích kiểm soát cách thức hoạt động của công cụ, là tất cả: P
Phoshi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.