สร้างนามแฝงใน Windows XP


54

กลับไปโรงเรียนฉันเคยมีไฟล์. login ตามแนวของ

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

ฉันต้องการทำสิ่งนั้นด้วยกล่อง XP ของฉันที่นี่ที่ทำงาน แต่ทรัพยากรส่วนใหญ่ที่ฉันพบออนไลน์ดูเหมือนค่อนข้างซับซ้อนและใช้งานหนัก มีวิธีการทำเช่นนี้ที่ไม่เกี่ยวข้องกับการล้อเล่นในรีจิสทรีหรือใช้ไฟล์แบทช์ขนาดใหญ่หรือไม่?

เหตุผลดั้งเดิมของฉันในการถามสิ่งนี้คือฉันต้องการเพียงบรรทัดคำสั่งสำหรับหนึ่งคำสั่งในโฟลเดอร์เดียวและฉันต้องการที่จะไปยังโฟลเดอร์นั้นได้อย่างรวดเร็วเมื่อฉันเปิดใช้งานบรรทัดคำสั่ง แต่คำตอบที่ได้รับการยอมรับสำหรับคำถามนี้เป็นสิ่งที่ดีเพื่อที่ฉันตัดสินใจที่จะถามเกี่ยวกับปัญหาเดิมของฉันเป็นคำถามเฉพาะกิจการ: เปลี่ยนไปยังโฟลเดอร์เริ่มต้นเริ่มต้นสำหรับพรอมต์คำสั่งของ Windows


ตัวเลือกที่รวดเร็ว & สกปรกคือเพียงเพิ่มโฟลเดอร์ลงในPATHตัวแปร คลิกขวาที่ My ComputerเลือกPropertiesไปที่ขั้นสูงแล้วตัวแปรสภาพแวดล้อม ข้อมูลเพิ่มเติม: stackoverflow.com/a/20773224/722036
aexl

คำตอบ:


84

ดูเหมือนมีคนไม่มากที่รู้เรื่องนี้ แต่คุณสามารถใช้doskeyเครื่องมือแมโครในตัวปัญหาเดียวคือมันไม่ได้บันทึก มีหลายวิธีในการแก้ไขปัญหานี้

ใช้:

doskey ls=dir

lsตอนนี้จะทำรายการไดเรกทอรีเหมือนdirจะ

หากคุณต้องการใช้อาร์กิวเมนต์กับคำสั่งให้ใช้ไวยากรณ์นี้:

doskey d=dir $*

สำหรับวิธีแก้ปัญหาเพื่อให้ประหยัด:

  • บันทึกนามแฝงทั้งหมดเป็นไฟล์ในรูปแบบนี้:
doskey ls = dir
doskey .. = cd ..

และวางไว้ในหนึ่งในไดเรกทอรีในเส้นทางของคุณ ตั้งชื่อให้สั้น ๆ เช่นa.cmdดังนั้นเมื่อคุณเปิด cmd คุณสามารถพิมพ์aเพื่อโหลด aliases ของคุณ

หากการพิมพ์aและการกดEnterดูเหมือนทำงานมากเกินไปให้โยนสิ่งนี้ลงในสคริปต์AutoHotkeyของคุณ:

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

กำลังโหลดนามแฝงอัตโนมัติ :

คุณสามารถเปลี่ยนทางลัดทั้งหมดเป็น cmd เพื่อชี้ไปที่%SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmdแทนที่C:\path\to\aliases.cmdด้วยตำแหน่งของไฟล์นามแฝงของคุณ หากคุณมักจะเรียกใช้จากกล่องเรียกใช้คุณสามารถ:

  • ตัวอย่างเช่นเปลี่ยนชื่อ cmd executable เป็น cmd2.exe และแทนที่ด้วย script หรือ executable อื่นซึ่งเรียกใช้คำสั่งด้านบน (ฉันไม่แนะนำวิธีนี้เนื่องจากมีแอพจำนวนมากขึ้นอยู่กับ cmd)
  • สร้างแบตช์สคริปต์และเรียกมันว่า cmda (cmd with aliases) เป็นต้น มีมันเปิดคำสั่งดังกล่าวและวางสคริปต์ชุดนี้ที่ไหนสักแห่งในเส้นทางของคุณ

1
1 NICE !!! ไม่ได้เห็น (หรือจำ) Doskey สำหรับปี ... (เล่น! ความทรงจำเพลงในหัวของฉัน!)
วิลเลียม Hilsum

19
ไม่จำเป็นต้องใช้สคริปต์ AutoHotkey ที่นี่ Windows มีวิธีเรียกใช้ไฟล์แบตช์อัตโนมัติเมื่อใดก็ตามที่คุณเปิดใช้งาน cmd.exe: technet.microsoft.com/en-us/library/cc779439(WS.10).aspx ฉันกำหนดค่าให้ชี้ไปที่ c: \ dev \ autorun.bat ซึ่งจะโหลดมาโคร doskey และเรียกใช้ยูทิลิตี้อื่น ๆ ที่สะดวกสบาย
Dan Fabulich

ฉันแปลกใจจริงๆที่ไม่มีใครแนะนำ PowerShell ว่าเป็นคำสาปที่ดี
Eddie B

มาโครที่กำหนดใช้งานได้จากกล่อง Win + R (Run) หรือไม่?
ZEE

38

มันง่ายเหมือน:

  1. สร้างไฟล์ที่มีชื่อแทนเช่นc: \ bin \ aliases :

    ls=dir /ONE $*
    cd=cd /d $*
    python=python -ic "" 
    ps=tasklist $*
    kill=taskkill /IM $*
    
  2. สร้างไฟล์ที่มีทุกสิ่งที่คุณต้องการเรียกใช้เมื่อเริ่มต้น cmd.exe รวมถึงการโหลดชื่อแทนด้วยdoskeyเช่นc: \ bin \ cmd_autoruns.cmd :

    @echo off
    cls
    color 0A
    doskey /macrofile=c:\bin\aliases
    
  3. สร้างและเรียกใช้เมื่อแบตช์ไฟล์ (เช่นset_cmd_autorun.cmd ) ซึ่งจะตั้งAutorunคีย์ประมวลผลคำสั่งเป็นcmd_autoruns.cmdของเรา:

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

เป็นทางเลือกแทนset_cmd_autorun.cmdนอกจากนี้ยังเป็นไปได้ที่จะสร้างไฟล์. reg เช่นเดียวกับที่อยู่ด้านล่างแทนจากนั้นผสานด้วยการดับเบิลคลิก:

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"

'color OA' น่าจะเป็น 'color 0A'
csnullptr

1
คุณต้องการเพียง"Autorun"="..."บรรทัดใต้[HKEY_...]บรรทัดยกเว้นว่าคุณต้องการตั้งค่าคีย์อื่นอย่างชัดเจนเช่นกัน
c24w

5

คำตอบของฉันคล้ายกับของ vriolk

ฉันสร้างไฟล์. bat ที่มีมาโครของฉัน (เช่น c: \ winscripts \ autoexec.bat):

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

และจากพรอมต์คำสั่ง cmd วิ่ง "cmd /?" ค้นหาคีย์รีจิสตรีเพื่อแก้ไขการทำงานอัตโนมัติของ cmd:

ตัวประมวลผล \ AutoRun HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command
  และ / หรือ
ตัวประมวลผล \ AutoRun HKEY_CURRENT_USER \ Software \ Microsoft \ Command

ใช้ regedit เพิ่มพา ธ สำหรับไฟล์มาโครของคุณเป็นค่า AutoRun (เพิ่มคีย์ AutoRun หากไม่มีอยู่):

C: \ winscripts \ autoexec.bat

ตอนนี้เมื่อใดก็ตามที่คุณเรียกใช้ "cmd" จากพรอมต์ Start-> Run autoexec.bat นี้จะเรียกใช้และสร้างมาโคร mackey สำหรับคุณ

ยังไงก็ตาม whereis.cmd มีสิ่งนี้:

@for %% e ใน (% PATHEXT%) ทำ @for %% i ใน (% 1 %% e) ทำ @ ถ้าไม่ใช่ "%% ~ $ PATH: i" == "" echo %% ~ $ PATH: i

ซึ่งค้นหาตัวแปร PATH สำหรับคำที่คุณระบุ:

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

BTW แทนการwhereisแฮ็คคุณสามารถใช้whereคำสั่ง builtin ได้
Dheeraj Bhaskar

1

คุณสามารถสร้างไฟล์. cmd และวางไว้ที่อื่นใน% PATH% ของคุณ (เช่น C: \ Windows) วิธีใช้ชื่อแทนเว็บของคุณเป็นตัวอย่าง:

@C:
@cd \inetpub\wwwroot

จะทำอะไรเช่น:

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

ฉันไม่ทราบวิธีการสร้างไฟล์สไตล์. alias แบบแบน ๆ


1

วิธีที่รวดเร็วและสกปรกมากที่จะมีทางลัดที่พร้อมซึ่งไม่ต้องยุ่งยากมากคือการสร้างแบตช์ไฟล์ที่ตั้งชื่อตามชื่อแทนในไดเรกทอรีที่เป็นส่วนหนึ่งของตัวแปรสภาพแวดล้อม PATH ตัวอย่างเช่นฉันต้องการเรียกใช้ Notepad ++ ผ่านนามแฝงดังนั้นฉันจึงสร้าง npp.bat ใน C: \ WINDOWS ที่มีสิ่งต่อไปนี้:

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

ตอนนี้คำสั่ง npp สามารถใช้ได้จาก cmd shell ใด ๆ โดยไม่ต้องมีไฟล์ autorun และ / หรือไปยังรีจิสตรี


0

วิธีที่ฉันทำมันเป็นสคริปต์หลามอย่างรวดเร็ว:

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

ขออภัยในการเขียนสคริปต์ที่ไม่ดี แต่การใช้งานค่อนข้างดี imo วางไว้ที่ใดที่หนึ่งในเส้นทางของคุณเพิ่ม. py ของคุณไปที่ PATHEXT ของคุณและเพิ่ม c: \ aliases ไปยัง PATH ของคุณด้วย (หรือเปลี่ยนเป็นชุดอะไรก็ได้) จากนั้นใช้:

alias <command> <action>

ในนามแฝง (ใช่แล้ว = แม้ว่าจะไม่ยากที่จะเพิ่ม. แยกไว้ในนั้น) และ:

alias -p <command or part of>

เพื่อแสดงสิ่งที่เป็น

แฮ็ค แต่มีประโยชน์อย่างโง่เขลา มีสคริปต์ unalias ที่เทียบเท่ากัน แต่ฉันแน่ใจว่าคุณสามารถใช้สคริปต์ดังกล่าวได้

แก้ไข: เห็นได้ชัดว่าต้องใช้ python ซึ่งเขียนใน v26 แต่อาจใช้งานได้กับทุกสิ่งที่ผ่านมา เหมือนก่อนขออภัยคุณภาพ :)

edit2: ที่จริงแล้วบางอย่างเช่นนี้ แต่การเพิ่มลงในสิ่ง doskey จะดีกว่า คุณสามารถเพิ่มคำสั่งเริ่มต้นไปยัง cmd ด้วยคีย์รีจิสทรีการทำงานอัตโนมัติเช่นกันเพื่อให้สามารถทำความสะอาดได้มากขึ้น


1
วิธีแก้ปัญหาที่ดีแม้ว่าเล็กน้อยเกินความต้องการของฉัน
Pops

แน่นอนมันเป็น ฉันต้องการควบคุมว่างานของฉันทำงานอย่างไรทั้งหมด: P
Phoshi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.