Tornando a scuola, avevo un file .login lungo le linee di
alias ll = ls -l
alias dir = ls -Fhl
alias web = cd ~/public/public_www/development
Mi piacerebbe fare questo genere di cose con il mio XP box qui al lavoro, ma la maggior parte delle risorse che ho trovato online sembrano abbastanza complicate e pesanti. C'è un modo per fare ciò che non coinvolge le mucking nel registro o l'esecuzione di un file batch di grandi dimensioni?
La mia ragione originale per chiedermelo è che ho bisogno solo della riga di comando per un comando in una cartella specifica, e volevo essere in grado di arrivare a quella cartella velocemente quando ho lanciato la riga di comando. Ma la risposta accettata per questa domanda è talmente buona che ho deciso di chiedere del mio problema originale come una domanda separata: Passa alla cartella di avvio predefinita per il comando Prompt di Windows .
Non molte persone sembrano saperlo, ma è possibile utilizzare lo strumento macro doskey
, l'unico problema è che non viene salvato. Ci sono molti modi per ovviare a questo però.
utilizzo:
doskey ls=dir
ls
ora farà una lista di directory proprio come farebbe dir
.
Se si desidera utilizzare argomenti con i comandi, utilizzare questa sintassi:
doskey d=dir $*
Per quanto riguarda la soluzione alternativa per farli salvare:
doskey ls = dir doskey .. = cd ..
e posizionalo in una delle directory sul tuo percorso. Assegnagli un nome breve come a.cmd , quindi quando apri cmd puoi digitare a per caricare i tuoi alias.
Se si digita un a e premendo Enter sembra troppo lavoro, gettalo nello script AutoHotkey :
WinWaitActive, C:\WINDOWS\system32\cmd.exe
Send {a}{Enter}
Caricamento alias automaticamente :
È possibile modificare tutte le scorciatoie in cmd in modo che puntino a %SystemRoot%\system32\cmd.exe /K C:\path\to\aliases.cmd
, sostituendo C:\path\to\aliases.cmd
con il percorso del file alias. Se in genere lo si esegue dalla casella Esegui, è possibile:
È un semplice come:
Crea un file con alias, ad es. c:\bin\alias :
ls=dir /ONE $*
cd=cd /d $*
python=python -ic ""
ps=tasklist $*
kill=taskkill /IM $*
Crea un file con tutte le cose che vuoi eseguire quando viene avviato cmd.exe, incluso il caricamento degli alias con doskey ad es. c:\bin\cmd_autoruns.cmd :
@echo off
cls
color 0A
doskey /macrofile=c:\bin\aliases
Crea ed esegui una volta un file batch (es. set_cmd_autorun.cmd ) che imposterà la chiave Autorun
del Processore di Comando per cmd_autoruns.cmd :
reg add "hkcu\software\Microsoft\command processor" /v Autorun /t reg_sz /d c:\bin\cmd_autoruns.cmd
In alternativa a set_cmd_autorun.cmd è anche possibile creare un file .reg come quello seguente e quindi unirlo con un doppio clic:
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"
La mia risposta è simile a quella di vriolk
Ho creato un file .bat che conteneva le mie macro (ad esempio c:\winscripts\autoexec.bat):
@ doskey whereis = c:\winscripts\whereis.cmd $ * @ doskey ls = dir/b $ * @ doskey l = dir/od/p/q/tw $ *
e poi da un prompt cmd è stato eseguito "cmd /?" per trovare la chiave di registro da modificare per l'autorun di cmd:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun E/o HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
usando regedit, aggiungi il percorso per il tuo file batch macro al valore AutoRun (aggiungi la chiave AutoRun se non è lì):
c :\winscripts\autoexec.bat [. .____]
ora ogni volta che si esegue "cmd" da Start-> Esegui prompt, questo autoexec.bat verrà eseguito e creerà automaticamente i macro doskey.
A proposito, whereis.cmd contiene questo:
@for %% e in (% PATHEXT%) do @for %% i in (% 1 %% e) do @if NOT "%% ~ $ PATH: i" == "" echo %% ~ $ PATH: i
che ricerca la variabile PATH per il termine che fornisci:
c:> whereis javaw c:\jdk\bin\javaw.exe
Puoi creare file .cmd e inserirli in qualche posto nel tuo% PATH% (come C:\Windows). Per utilizzare il tuo alias web come esempio:
@C:
@cd \inetpub\wwwroot
Farebbe qualcosa come:
M:\> web
C:\inetpub\wwwroot>
Non sono a conoscenza di alcun modo per creare un file di stile flat in formato .aliases.
un modo molto veloce e sporco per avere un collegamento pronto, che non richiede molta confusione, è quello di creare un file batch chiamato dopo l'alias, in una delle directory che fanno parte della variabile d'ambiente PATH. Ad esempio, volevo invocare Notepad ++ tramite un alias, quindi ho creato npp.bat in C:\WINDOWS che conteneva quanto segue:
"c:\Program Files\Notepad++\notepad++.exe" %1 %2 %3 %4 %5
ora il comando npp può essere utilizzato da qualsiasi shell cmd, senza i file autorun e/o le escursioni nel registro
Il modo in cui l'ho fatto è stato con un rapido script python:
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()
Chiedo scusa per il povero script, ma l'utilizzo è abbastanza bello, imo. Mettilo da qualche parte nel tuo percorso, aggiungi .py al tuo PATHEXT e aggiungi anche c:\alias al tuo PATH (o cambialo, qualunque cosa sia), quindi usa:
alias <command> <action>
in alias (Sì, no =, anche se non sarebbe difficile aggiungere un .split) e:
alias -p <command or part of>
Per mostrare cosa è qualcosa.
Hackish, ma stupidamente utile. C'è uno script di unalias equivalente, ma sono sicuro che puoi risolverlo.
edit: Questo ovviamente richiede python, scritto su v26 ma probabilmente funzionerà in qualcosa di recente. Come prima, scusa per la qualità :)
edit2: In realtà, qualcosa del genere, ma per aggiungere alla roba doskey sarebbe meglio. Puoi anche aggiungere comandi di avvio a cmd con la chiave di registro di esecuzione automatica, in modo che sia molto più pulito.