Псевдонимы в командной строке Windows
Я добавил notepad++.exe
к моим переменным Path in Environment.
Теперь в командной строке, notepad++.exe filename.txt
открывает filename.txt
, Но я хочу сделать просто np filename.txt
открыть файл.
Я пытался с помощью DOSKEY np=notepad++
, Но это просто вывод на первый план уже открытого блокнота ++ без открытия файла. Как я могу сделать это открыть файл?
Благодарю.
23 ответа
Чтобы добавить к ответу Джоша,
Вы можете сделать псевдоним (ы) постоянным с помощью следующих шагов,
- Создайте.bat или.cmd файл с вашим
DOSKEY
команды. - Запустите regedit и перейдите к
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
Добавить строковое значение с именем
AutoRun
и полный путь к вашему.bat/.cmd файлу.Например,
%USERPROFILE%\alias.cmd
, заменив начальный сегмент пути на%USERPROFILE%
полезно для синхронизации между несколькими машинами.
Таким образом, при каждом запуске cmd загружаются псевдонимы.
Для полноты, вот шаблон для иллюстрации того, какие псевдонимы могут оказаться полезными.
@echo off
:: Temporary system path at cmd startup
set PATH=%PATH%;"C:\Program Files\Sublime Text 2\"
:: Add to path by command
DOSKEY add_python26=set PATH=%PATH%;"C:\Python26\"
DOSKEY add_python33=set PATH=%PATH%;"C:\Python33\"
:: Commands
DOSKEY ls=dir /B
DOSKEY sublime=sublime_text $*
::sublime_text.exe is name of the executable. By adding a temporary entry to system path, we don't have to write the whole directory anymore.
DOSKEY gsp="C:\Program Files (x86)\Sketchpad5\GSP505en.exe"
DOSKEY alias=notepad %USERPROFILE%\Dropbox\alias.cmd
:: Common directories
DOSKEY dropbox=cd "%USERPROFILE%\Dropbox\$*"
DOSKEY research=cd %USERPROFILE%\Dropbox\Research\
- Обратите внимание, что
$*
синтаксис работает после строки каталога, а также исполняемого файла, который принимает аргументы. Таким образом, в приведенном выше примере, пользовательская командаdropbox research
указывает на тот же каталог, что иresearch
, - Как отметил Ривенфолл, хорошей идеей будет включить команду, которая позволяет удобно редактировать
alias.cmd
файл. Увидетьalias
выше. Если вы находитесь в сеансе cmd, введитеcmd
перезапустить cmd и перезагрузитьalias.cmd
файл.
Когда я искал в интернете ответ на вопрос, почему-то дискуссии были либо сосредоточены только на постоянстве, либо только на использовании DOSKEY. Я надеюсь, что кому-то будет полезно, если эти два аспекта будут здесь вместе!
Вот .reg
файл, который поможет вам установить alias.cmd
, Теперь он установлен в качестве примера для папки dropbox, как предложено выше.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="%USERPROFILE%\\alias.cmd"
Вам нужно передать параметры, попробуйте это:
doskey np=notepad++.exe $*
Редактировать (отвечая на комментарий Ромонова) В: Есть ли какой-нибудь способ, которым я могу запомнить командную строку, чтобы мне не приходилось запускать ее каждый раз, когда я открываю новую командную строку?
doskey
текстовая команда, которая интерпретируется командным процессором (например, cmd.exe), она не может знать, как изменить состояние в каком-либо другом процессе (особенно в том, который еще не запущен).
Люди, которые используют doskey
для настройки их начальных сред командной оболочки обычно используют /K
опция (часто с помощью ярлыка) для запуска командного файла, который выполняет все общие настройки (например, задает заголовок окна, цвета и т. д.).
cmd.exe /K env.cmd
env.cmd:
title "Foo Bar"
doskey np=notepad++.exe $*
...
Если вы просто собираетесь выполнить несколько простых команд, вы можете выполнить следующие шаги:
- Создайте папку с именем C:\Aliases
- Добавьте C:\Aliases к своему пути (чтобы любые файлы в нем были найдены каждый раз)
- Создайте файл .bat в C:\Aliases для каждого из псевдонимов, которые вы хотите
Может быть, излишним, но в отличие от (в противном случае превосходного) ответа от @Argyll, это решает проблему этой загрузки каждый раз.
Например, у меня есть файл с именем dig2.bat со следующим:
@echo off
echo.
dig +noall +answer %1
Ваш файл np будет иметь следующее:
@echo off
echo.
notepad++.exe %1
FWIW, у меня есть около 20 псевдонимов (отдельные файлы.bat) в моем каталоге C:\Aliases - я просто создаю новые по мере необходимости. Может быть, не самое подходящее, но работает нормально.
ОБНОВЛЕНИЕ: согласно отличному предложению пользователя @Mav, даже лучше использовать %*, а не % 1, поэтому вы можете передать команде несколько файлов, например:
@echo off
echo.
notepad++.exe %*
Таким образом, вы можете сделать это:
np c:\temp\abc.txt c:\temp\def.txt c:\temp\ghi.txt
и он откроет все 3 файла.
В качестве альтернативы вы можете использовать cmder
который позволяет добавлять псевдонимы так же, как Linux:
alias subl="C:\Program Files\Sublime Text 3\subl.exe" $*
Учитывая, что вы добавили notepad++. Exe в переменную PATH, это очень просто. Создайте файл в папке System32 с именем np.bat
со следующим кодом:
@echo off
call notepad++.exe %*
%*
передает все аргументы, которые вы даете np
командовать notepad++.exe
команда.
РЕДАКТИРОВАТЬ: Вам понадобится доступ администратора для сохранения файлов в папке System32, что было немного неудобно для меня. Я просто создал файл где-то еще и переместил его в System32 вручную.
Также вы можете создать alias.cmd в вашем пути (например, C:\Windows) с помощью команды
@echo %2 %3 %4 %5 %6 > %windir%\%1.cmd
Как только вы это сделаете, вы можете сделать что-то вроде этого:
alias nameOfYourAlias commands to run
И после этого вы можете ввести в командной строке
nameOfYourAlias
это выполнит
commands to run
НО лучший способ для меня - это просто добавить путь к программе.
setx PATH "%PATH%;%ProgramFiles%\Sublime Text 3" /M
И теперь я управляю возвышенным как
subl index.html
Консольные псевдонимы в Windows 10
Чтобы определить псевдоним консоли, используйте Doskey.exe
создать макрос или использовать AddConsoleAlias
функция.
DOSKEY
doskey test=cd \a_very_long_path\test
Также для передачи параметров добавьте $*
в конце: doskey short=longname $*
AddConsoleAlias
AddConsoleAlias( TEXT("test"),
TEXT("cd \\<a_very_long_path>\\test"),
TEXT("cmd.exe"));
Более подробная информация здесь Console Aliases, Doskey, Parameters
Естественно, я бы не успокоился, пока не получил наиболее удобное решение. Объединив очень много ответов и тем в обширном Интернете, вот что вы можете получить.
- Загружается автоматически с каждым экземпляром
cmd
- Не требует ключевого слова
DOSKEY
для псевдонимов
Обратите внимание, что это в значительной степени основано на ответе и комментариях Аргайлла, обязательно прочтите его, чтобы понять концепции.
Как это устроено?
1) создать файл макроса с псевдонимами (или файл bat/cmd, чтобы также запускать другие вещи)
2) зарегистрируйте его в реестре для запуска на каждом экземпляре cmd
- вы также можете запустить его через ярлык, только если хотите
Вот и все
%userprofile%/cmd/aliases.mac
;==============================================================================
;= This file is registered via registry to auto load with each instance of cmd.
;================================ general info ================================
;=https://stackru.com/a/59978163/985454 - how to set it up?
;=https://gist.github.com/postcog/5c8c13f7f66330b493b8 - example doskey macrofile
;========================= loading with cmd shortcut ==========================
;= create a cmd link with the following target :
;= %comspec% /k "(doskey /macrofile=%userprofile%\cmd\aliases.mac)"
alias=subl %USERPROFILE%\cmd\aliases.mac
hosts=runas /noprofile /savecred /user:QWERTY-XPS9370\administrator "subl C:\Windows\System32\drivers\etc\hosts" > NUL
ls=ls --color=auto $*
ll=ls -l --color=auto $*
la=ls -la --color=auto $*
grep=grep --color
~=cd %USERPROFILE%
cdr=cd c:\repos
cdd=cd c:\repos\dixons
cds=cd c:\repos\stekkie
cdu=cd c:\repos\uplus
cduo=cd c:\repos\uplus\oxbridge-fe
cdus=cd c:\repos\uplus\stratus
;============================= :end ============================
;= rem ******************************************************************
;= rem * EOF - Don't remove the following line. It clears out the ';'
;= rem * macro. We're using it because there is no support for comments
;= rem * in a DOSKEY macro file.
;= rem ******************************************************************
;=
Теперь у вас есть два варианта:
а) зарегистрировать только макрофайл
б) использовать обычныйcmd/bat
файл, чтобы также запускать произвольные команды.
Переименуйте тот, который вы хотитеAutorun
.
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
- вручную
Autorun REG_SZ doskey /macrofile=%userprofile%\cmd\aliases.mac
Autorun_ REG_SZ %USERPROFILE%\cmd\env.cmd
%userprofile%/cmd/cmd-aliases.reg
- или через reg файл
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"Autorun"="doskey /macrofile=%userprofile%\\cmd\\aliases.mac"
"Autorun_"="%USERPROFILE%\\cmd\\env.cmd"
%userprofile%/cmd/env.cmd
вам не нужен этот файл, если вы выбрали а) выше
:: This file is registered via registry to auto load with each instance of cmd.
:: https://stackru.com/a/59978163/985454
@echo off
doskey /macrofile=%userprofile%\cmd\aliases.mac
:: put other commands here
Вы хотите создать псевдоним, просто набрав:
c:\>alias kgs kubectl get svc
Created alias for kgs=kubectl get svc
И используйте псевдоним следующим образом:
c:\>kgs alfresco-svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alfresco-svc ClusterIP 10.7.249.219 <none> 80/TCP 8d
Просто добавьте следующее alias.bat
путь к файлу Он просто создает дополнительные командные файлы в том же каталоге, что и сам.
@echo off
echo.
for /f "tokens=1,* delims= " %%a in ("%*") do set ALL_BUT_FIRST=%%b
echo @echo off > C:\Development\alias-script\%1.bat
echo echo. >> C:\Development\alias-script\%1.bat
echo %ALL_BUT_FIRST% %%* >> C:\Development\alias-script\%1.bat
echo Created alias for %1=%ALL_BUT_FIRST%
Пример этого пакетного файла называется kgs.bat
является:
@echo off
echo.
kubectl get svc %*
На самом деле, я пойду к вам лучше и расскажу о небольшой технике, которую я использовал с тех пор, как программировал на Amiga. В любой новой системе, которую вы используете, будь то персональная или профессиональная, на первом этапе необходимо создать две папки: C:\BIN и C:\BATCH. Затем измените оператор пути, чтобы поместить оба начала в порядок C:\BATCH;C:\BIN;[остаток пути].
Сделав это, если у вас есть несколько ненужных утилит, к которым вам нужен доступ, просто скопируйте их в папку C: \ BIN, и они будут на вашем пути. Чтобы временно переопределить эти назначения, вы можете добавить пакетный файл с тем же именем, что и исполняемый файл, в папку C: \ BATCH, и путь найдет его перед файлом в C:\BIN. Он должен охватывать все, что вам может понадобиться.
Конечно, в наши дни каноническим правильным способом сделать это было бы создание символического перехода к файлу, но применяется тот же принцип. Также есть небольшой дополнительный бонус. Если вы хотите поместить что-то в систему, что конфликтует с чем-то, уже находящимся в пути, размещение этого в папке C: \ BIN или C:\Batch будет просто заменять оригинал - позволяя вам переопределить материал временно или постоянно, или переименовывать вещи в имена, которые вам удобнее - без изменения оригинала.
Расширение на ответ Рорихвитта.
Преимущество использования файлов.cmd перед DOSKEY состоит в том, что эти "псевдонимы" затем доступны в других оболочках, таких как PowerShell или WSL (подсистема Windows для Linux).
Единственный недостаток использования этих команд в bash заключается в том, что это может занять немного больше настроек, так как вам может потребоваться выполнить некоторые манипуляции с путями перед вызовом своего "псевдонима".
например, у меня есть vs.cmd, который является моим "псевдонимом" для редактирования файла в Visual Studio
@echo off
if [%1]==[] goto nofiles
start "" "c:\Program Files (x86)\Microsoft Visual Studio
11.0\Common7\IDE\devenv.exe" /edit %1
goto end
:nofiles
start "" "C:\Program Files (x86)\Microsoft Visual Studio
11.0\Common7\IDE\devenv.exe" "[PATH TO MY NORMAL SLN]"
:end
Который запускает VS (в данном случае VS2012 - но настраивается по вкусу), используя мой "обычный" проект, в котором не указано ни одного файла, но когда ему дается файл, он будет пытаться присоединиться к работающему VS, открывая этот файл "в этом проекте", а не запускать новый экземпляр VS.
Для использования этого из bash я добавляю дополнительный уровень косвенности, так как "vs Myfile" не всегда будет работать
alias vs='/usr/bin/run_visual_studio.sh'
Который корректирует пути перед вызовом vs.cmd
#!/bin/bash
cmd.exe /C 'c:\Windows\System32\vs.cmd' "`wslpath.sh -w -r $1`"
Так что я могу просто так
vs SomeFile.txt
В командной строке, Power Shell или bash, и он открывается в моей работающей Visual Studio для редактирования (что просто избавляет мой бедный мозг от необходимости иметь дело с командами VI или некоторыми другими, когда я часами редактировал в VS).
Очень простые пользовательские псевдонимы:
Создайте новую папку в любом месте вашей системы. Создайте новый файл с именем, которое вы хотите назвать псевдонимом с
.cmd
расширение. Запишите все команды в файл, например
cd /D D:\Folder
g++ -o run whatever.cpp
Скопируйте путь к папке.
Перейти к
Settings > System > About > Advanced system settings > Enviornment Variables...
Теперь найдите переменную под
System variables
раздел. Щелкните по нему один раз и щелкните
Edit
. Теперь нажмите
New
и вставьте скопированный текст.
Щелкните и
OK
. Перезапустите командную строку Powershell / cmd и вуаля, вы получили постоянный псевдоним! Вы можете использовать ту же папку для создания других псевдонимов без необходимости изменять
Path
снова переменная!
Это решение не является подходящим, но в некоторых случаях служит цели.
Сначала создайте папку и добавьте ее в системный путь. Перейдите к исполняемому файлу любой программы, для которой вы хотите создать псевдоним. Щелкните правой кнопкой мыши и отправьте на рабочий стол (Создать ярлык). Переименуйте ярлык в любое удобное псевдоним. Теперь возьмите ярлык и поместите в вашу папку.
В командной строке вы можете напрямую ввести имя ярлыка и открыть программу. Но из командной строки вам нужно добавить .lnk и нажать Enter, программа будет открыта.
Мое быстрое и грязное решение - добавить файл BAT в любой каталог, который уже находится в PATH.
Пример:
@ECHO OFF
doskey dl=aria2c --file-allocation=none $*
aria2c --file-allocation=none %**
Таким образом, при первом запуске «dl» будет выполняться файл bat, но со второго раза он будет использовать псевдоним.
Немного удивлен, что никто не додумался просто использовать для этого собственный функционал файловой системы — создание символической ссылки.
Просто запустите команду ниже в выбранном вами каталоге, на который уже есть ссылка в вашем PATH:%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
это то место, где я обычно их создаю, поскольку он добавляется в путь «из коробки», и это то, что Windows, похоже, использует для псевдонимов выполнения, управляемых ОС:
mklink npp.exe "c:\Program Files\Notepad++\notepad++.exe"
Это создаст символическую ссылку, которую можно будет выполнить как из графического пользовательского интерфейса, так и из приложений на основе командной строки, и не потребует дополнительных уловок для передачи параметров и т. д.
Так как у вас уже есть notepad++.exe
на вашем пути. Создайте ярлык в этой папке с именем np
и указать на это notepad++.exe
,
Я использую Совок . Он, в свою очередь, использует утилиту Shim для пересылки команд соответствующим исполняемым файлам.
Таким образом, это похоже на решение для файла .cmd, но с файлом .exe Shim.
Моей целью было бежатьpodman.exe
кdocker
команда.
Поэтому я создал копию файла shim .exe (все они находятся в папке%USERPROFILE%\scoop\shims
который находится в PATH) с соответствующим именем (docker.exe
в моем случае). Плюс создал для него файл конфигурации (docker.shim
) следующего содержания:
path = "<USERPROFILE>\scoop\apps\podman\current\podman.exe"
где<USERPROFILE>
следует заменить содержанием%USERPROFILE%
переменная.
Если вам нужны дополнительные параметры для исполняемого файла, они могут быть предоставлены Shim с помощью командыargs =
вариант.
Во-первых, вы можете создать файл с именем np.cmd и поместить его в папку, которая находится в списке поиска PATH. Затем отредактируйте файл np.cmd, как показано ниже:
@echo off
notepad++.exe
Если вы хотите включить псевдонимы для каждого каталога / проекта, попробуйте следующее:
Сначала создайте командный файл, который будет искать файл с именем
aliases
в текущем каталоге и инициализировать псевдонимы из него, давайте назовем егоmake-aliases.cmd
@echo off if not exist aliases goto:eof echo [Loading aliases...] for /f "tokens=1* delims=^=" %%i in (aliases) do ( echo %%i ^<^=^> %%j doskey %%i=%%j ) doskey aliases=doskey /macros echo -------------------- echo aliases ^=^> list all echo alt+F10 ^=^> clear all echo [Done]
Затем создайте
aliases
везде, где они вам нужны, используя следующий формат:alias1 = command1 alias2 = command2 ...
например:
b = nmake c = nmake clean r = nmake rebuild
Затем добавьте местоположение
make-aliases.cmd
на ваш%PATH%
переменная, чтобы сделать его общесистемным или просто держать его в известном месте.Сделать это автоматически
cmd
,Я бы определенно рекомендовал не использовать
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
для этого, потому что некоторые инструменты разработки будут запускать сценарий автозапуска несколько раз за сеанс.Если вы используете ConEmu, вы можете пойти другим путем и запустить скрипт из задачи запуска (
Settings
>Startup
>Tasks
), например, я создал запись под названием{MSVC}
:cmd.exe /k "vcvars64 && make-aliases"
,а затем зарегистрировал его в контекстном меню Проводника через
Settings
>Integration>
с участиемCommand:
{MSVC} -cur_console:n
, так что теперь я могу щелкнуть правой кнопкой мыши папку и запустить приглашение для разработчиков VS внутри нее с моимaliases
загружается автоматически, если они оказались в этой папке.Без ConEmu вы можете просто создать ярлык для
cmd.exe
с соответствующей командой или просто запуститьmake-aliases
вручную каждый раз.
Если вы забыли свои псевдонимы, используйте aliases
макрос, и если что-то пойдет не так, просто сбросьте текущий сеанс, нажав Alt+F10, который является встроенной командой в cmd
,
Поскольку мне не нравилось, что мое окно командной строки блокируется до тех пор, пока я не закрою Notepad++, вот моя версия:
Создаватьnp.bat
со строкой:
@start "" "C:\Program Files\Notepad++\notepad++.exe" %*
Это сработало для меня:
echo @start "" "C:\Program Files\Notepad++\notepad++.exe" %* > np.bat
Переместите файл вC:\Windows\System32
. (Обычно требуются права администратора.)
Вариант отличного ответа @roryhewitt заключается в использовании вместо этого сценариев ps1 (Powershell), если ОП желает использовать терминал Windows вместо cmd.exe. При использовании пакетных файлов вы будете получать раздражающее сообщение (Terminate batch job (Y/N)?
) всякий раз, когда вам нужно принудительно завершить (CTRL-C) программу, которую запускал скрипт. Это позволяет избежать этого.
Шаги 1, 2: Идентичны вышеупомянутому ответу.
Шаг 3:
В папке C:\Aliases создайте сценарий Powershell с именем файла, соответствующим желаемому псевдониму. В случае с ОП
np.ps1
Содержимое скрипта должно быть просто следующим:
-
notepad++.exe $args
-
Вот и все!
В качестве
doskey
не работает для терминальных приложений PowerShell или Windows 10, я делюсь этим решением.
Демонстрация создания псевдонима в Windows 10. Ожидаемый псевдоним с входными параметрами:
com=D:\website_development\laragon\bin\php\php-8.1.2-Win32-vs16-x64/php8 D:\website_development\laragon\bin\composer/composer.phar
Процедура:
Создайте папку с именем «scripts» на диске C:.
Внутри папки скриптов создайте com.bat
Откройте com.bat
Пример для запуска
composer
команда с определенной версией PHP:@echo off set path=D:\website_development\laragon\bin\php\php-8.1.2-Win32-vs16-x64/php8 D:\website_development\laragon\bin\composer/composer.phar set args=%* set command=%path% %args% %command%
Сохрани это
Нажмите «Пуск»
Найдите «Редактировать переменные среды»
Нажмите «Дополнительно»
Добавьте каталог «scripts» в
PATH
.
Теперь вы можете запустить команду как ее псевдоним.
Примечание. Если вы хотите добавить новый псевдоним, просто создайте новый bat-файл.
Использование doskey - верный способ сделать это, но оно сбрасывается, когда окно командной строки закрывается. Вам нужно добавить эту строку в нечто вроде.bashrc эквивалента. Итак, я сделал следующее:
- Добавьте "C:\Program Files (x86)\Notepad++" в системную переменную пути
- Сделайте копию notepad ++. Exe (конечно, в той же папке) и переименуйте ее в np.exe
Работает просто отлично!