it-swarm.asia

Windows'ta bir takma ad oluşturun XP

Okula döndüğümde, satırları boyunca bir .login dosyası vardı.

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

İşyerinde XP kutumla bu tür bir şey yapmak isterdim, ancak çevrimiçi bulduğum kaynakların çoğu oldukça karmaşık ve ağır görünüyor. Bunu yapmak için kayıt defterinde mucking veya büyük bir toplu iş dosyası çalıştırma içermeyen bir yolu var mı?

Bunu istememin asıl sebebim, sadece belirli bir klasördeki bir komut için komut satırına ihtiyacım olmasıydı ve komut satırını başlattığımda bu klasöre hızlıca ulaşmak istedim. Ancak bu soru için kabul edilen cevap o kadar iyidir ki, asıl meselemi ayrı bir soru olarak sormaya karar verdim: Windows komut istemi için varsayılan başlangıç ​​klasörüne değiştir .

54
Pops

Bu konuda pek fazla kimse bilmiyor gibi görünüyor, ancak doskey yerleşik makro aracını kullanabilirsiniz, tek sorun onu kaydetmemesidir. Bununla birlikte çalışmanın birçok yolu vardır.

kullanımı:

doskey ls=dir

ls şimdi dir gibi yapacağınız bir dizin yapacaktır.

Komutlarla bağımsız değişken kullanmak istiyorsanız, bu sözdizimini kullanın:

doskey d=dir $*

Bunları kurtarmak için geçici çözüm gelince:

  • tüm takma adları bu biçimde bir dosyaya kaydedin:
doskey ls = dir 
 doskey .. = cd ..

ve yolunuzdaki dizinlerden birine yerleştirin. Buna kısa bir ad verin a.cmd , böylece cmd'yi açtığınızda a takma adlarınızı yüklemek için.

Yazıyorsanız a ve basarak Enter çok iş gibi görünüyor, bunu AutoHotkey betiğine atın:

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

Otomatik olarak takma ad yükleme :

Tüm kısayolları cmd olarak değiştirerek %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd 'u işaret edin, C:\path\to\aliases.cmd' u diğer ad dosyanızın konumu ile değiştirin. Genellikle çalıştırma kutusundan çalıştırırsanız, şunları yapabilirsiniz:

  • Cmd yürütülebilir dosyasını örneğin cmd2.exe olarak yeniden adlandırın ve bunu bir komut dosyasıyla veya yukarıdaki komutu başlatan başka bir yürütülebilir dosyayla değiştirin (bir çok uygulama cmd'ye bağlı olduğundan bu yöntemi gerçekten tavsiye etmem)
  • Bir toplu komut dosyası yapın ve örneğin cmda (aliases olan cmd) olarak adlandırın. Yukarıdaki komutu başlatmasını ve bu toplu komut dosyasını yolunuzda bir yere koymasını sağlayın.
84
John T

Bu kadar basit:

  1. Diğer adlarla bir dosya oluşturun, ör. c: takma ad\\ bin:

    ls=dir /ONE $*
    cd=cd /d $*
    python=python -ic "" 
    ps=tasklist $*
    kill=taskkill /IM $*
    
  2. Cmd.exe başlatıldığında çalıştırmak istediğiniz tüm şeyleri içeren bir dosya oluşturun, takma adları doskey ile ör. c:\bin\cmd_autoruns.cmd:

    @echo off
    cls
    color 0A
    doskey /macrofile=c:\bin\aliases
    
  3. Komut İşlemcisi Autorun anahtarını cmd_autoruns.cmd olarak ayarlayacak bir toplu iş dosyası oluşturun (örneğin, set_cmd_autorun.cmd).

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

set_cmd_autorun.cmd 'nin alternatifi olarak, bunun yerine aşağıdaki gibi bir .reg dosyası oluşturmak ve sonra bir çift tıklama ile birleştirmek de mümkündür:

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"
38
user29888

Cevabım vriolk's benzer

Makrolarımı içeren bir .bat dosyası oluşturdum (örneğin, c:\winscripts\autoexec.bat):

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

ve sonra bir cmd isteminden "cmd /?" autorun için düzenlenecek kayıt defteri anahtarını bulmak için:

 HKEY_LOCAL_MACHINE\Yazılım\Microsoft\Command İşlemci\AutoRun 
 Ve/veya 
 HKEY_CURRENT_USER\Yazılım\Microsoft\Komut İşlemci\AutoRun 

regedit kullanarak, makro toplu iş dosyanızın yolunu AutoRun değerine ekleyin (yoksa, AutoRun anahtarını ekleyin):

C 
:\winscripts\autoexec.bat [. .____]

şimdi Başlat-> Çalıştır İsteminden "cmd" yi çalıştırdığınızda, bu autoexec.bat da sizin için doskey makrolarını çalıştıracak ve yaratacaktır.

Bu arada whereis.cmd bunu içerir:

@ %% e için (% PATHEXT%),% @ için (% 1 %% e) için @% 'i yapın, "%% ~ $ PATH: i" == "" echo %% ~ $ PATH: i

sağladığınız terim için PATH değişkeninizi arar:

 c:> nerede javaw 
 c:\jdk\bin\javaw.exe
5
andematt

.Cmd dosyaları oluşturabilir ve bunları% PATH% içinde bir yere yerleştirebilirsiniz (C:\Windows gibi). Web takma adınızı örnek olarak kullanmak için:

@C:
@cd \inetpub\wwwroot

Gibi bir şey yapardım:

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

Düz bir .aliases tarzı bir dosya yapmanın hiçbir yolu farkında değilim.

1
djhowell

çok fazla yaygara gerektirmeyen hazır bir kısayolun çok hızlı ve kirli bir yolu - PATH ortam değişkeninin bir parçası olan dizinlerden birinde takma ad adında bir toplu iş dosyası oluşturmaktır. Örneğin, bir takma ad yoluyla Notepad ++ uygulamasını çağırmak istedim, bu nedenle aşağıdakileri içeren C:\WINDOWS içinde npp.bat oluşturdum:

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

şimdi npp komutu, autorun dosyaları ve/veya kayıt defterine geziler olmadan, herhangi bir cmd Kabuğundan kullanılabilir

1
hello_earth

Benim yaptığım gibi hızlı bir python betiği ile oldu:

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

Kötü senaryo için özür dilerim, ama kullanım oldukça güzel, imo. Yolunuzda bir yere yerleştirin, PATHEXT'inize .py ekleyin ve PATH'inize de c:\aliases ekleyin (veya ne olursa olsun değiştirin), sonra kullanın:

alias <command> <action>

diğer adaya (Yep, no =, orada bir .split eklemek zor olmasa da) ve:

alias -p <command or part of>

Bir şeyin ne olduğunu göstermek için.

Kötü, ama aptalca faydalı. Eşdeğer bir unalias betiği var, ancak bunu çözebileceğinizden eminim.

düzenleme: Bu açıkça v26'da yazılmış python gerektirir, ancak büyük olasılıkla yakın zamanda çalışacak. Daha önce olduğu gibi, kalite için üzgünüm :)

edit2: Aslında, böyle bir şey ama doskey şeyler eklemek için daha iyi olurdu. Autorun kayıt defteri anahtarıyla cmd'ye başlangıç ​​komutları da ekleyebilirsiniz, böylece daha temiz olabilir.

0
Phoshi