Назад в школе, я раньше имел .login файл вроде
alias ll = ls -l
alias dir = ls -Fhl
alias web = cd ~/public/public_www/development
Я хотел бы сделать такую вещь со своим полем XP здесь на работе, но большинство ресурсов, которые я нашел онлайн, кажется довольно сложным и мощным. Существует ли способ сделать это, которое не вовлекает слоняние без дела в реестр или выполнение большого пакетного файла?
Моя исходная причина выяснения у этого состояла в том, что мне только нужна командная строка для одной команды в одной определенной папке, и я хотел смочь добраться до той папки быстро, когда я запустил командную строку. Но принятый ответ для этого вопроса так хорош, что я решил спросить о своем первичном размещении как отдельный вопрос: Изменитесь на папку запуска по умолчанию для командной строки Windows.
Не многие люди, кажется, знают об этом, но можно использовать doskey
встроенный макро-инструмент, единственная проблема - то, что он не сохраняет. Существует много способов работать вокруг этого все же.
использование:
doskey ls=dir
ls
теперь сделает каталог, перечисляющий точно так же, как dir
был бы.
Если Вы хотите использовать споры с командами, используйте этот синтаксис:
doskey d=dir $*
Что касается обходного решения, чтобы заставить их сохранить:
doskey ls=dir doskey ..=cd ..
и поместите его в один из каталогов в Вашем пути. Назовите это чем-то коротким как a.cmd, поэтому при открытии cmd, Вы можете тип a для загрузки псевдонимов.
Если ввод 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 файлы и разместить их куда-нибудь в %PATH % (такой как C:\Windows). Использовать Ваш веб-псевдоним в качестве примера:
@C:
@cd \inetpub\wwwroot
Сделал бы что-то как:
M:\> web
C:\inetpub\wwwroot>
Я не знаю ни о каком способе сделать плоский файл стиля .aliases.
Путем я сделал это было с быстрым сценарием 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()
Извинения за плохие сценарии, но использование довольно хорошо, imo. Поместите его куда-нибудь в Ваш путь, добавьте .py к своему PATHEXT и добавьте c:\aliases к своему ПУТИ также (или измените его, безотносительно исков), затем используйте:
alias <command> <action>
для искажения (Да, нет =, хотя не было бы трудно добавить .split там), и:
alias -p <command or part of>
Отображаться, каково что-то.
Hackish, но глупо полезный. Существует эквивалентный сценарий непсевдонима, но я уверен, что можно разработать это один.
править: Это, очевидно, требует Python, записанного на v26, но будет, вероятно, работать в чем-либо недавнем. Как прежде, жаль о качестве :)
edit2: На самом деле что-то вроде этого, но добавить к материалу doskey было бы лучше. Можно добавить команды запуска к cmd с ключом реестра автозапуска также так, чтобы могло быть намного более чистым.
Это - простое как:
Создайте файл с псевдонимами, например, c:\bin\aliases:
ls=dir /ONE $*
cd=cd /d $*
python=python -ic ""
ps=tasklist $*
kill=taskkill /IM $*
Создайте файл со всем материалом, который Вы хотите выполнить, когда cmd.exe запускается, включая загрузку псевдонимов с doskey, например, c:\bin\cmd_autoruns.cmd:
@echo off
cls
color 0A
doskey /macrofile=c:\bin\aliases
Создайте и работайте однажды пакетный файл (например, 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"
Мой ответ подобен vriolk's
Я создал .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:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun and/or HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
использование regedit, добавляют, путь для Вашего макро-пакетного файла к значению AutoRun (добавьте ключ AutoRun, если это не там):
c:\winscripts\autoexec.bat
теперь каждый раз, когда Вы выполняете "cmd" от Запуска-> подсказка Выполнения, этот autoexec.bat также выполнит и создаст doskey макросы для Вас.
Между прочим, whereis.cmd содержит это:
@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i
который ищет Вашу переменную ПУТИ термин, Вы обеспечиваете:
c:>whereis javaw c:\jdk\bin\javaw.exe