Псевдонимы в командной строке Windows

Я добавил notepad++.exe к моим переменным Path in Environment.

Теперь в командной строке, notepad++.exe filename.txt открывает filename.txt, Но я хочу сделать просто np filename.txt открыть файл.

Я пытался с помощью DOSKEY np=notepad++, Но это просто вывод на первый план уже открытого блокнота ++ без открытия файла. Как я могу сделать это открыть файл?

Благодарю.

23 ответа

Решение

Чтобы добавить к ответу Джоша,

Вы можете сделать псевдоним (ы) постоянным с помощью следующих шагов,

  1. Создайте.bat или.cmd файл с вашим DOSKEY команды.
  2. Запустите regedit и перейдите к HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  3. Добавить строковое значение с именем 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 $*
...

Если вы просто собираетесь выполнить несколько простых команд, вы можете выполнить следующие шаги:

  1. Создайте папку с именем C:\Aliases
  2. Добавьте C:\Aliases к своему пути (чтобы любые файлы в нем были найдены каждый раз)
  3. Создайте файл .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

Если вы хотите включить псевдонимы для каждого каталога / проекта, попробуйте следующее:

  1. Сначала создайте командный файл, который будет искать файл с именем 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]
    
  2. Затем создайте aliases везде, где они вам нужны, используя следующий формат:

    alias1 = command1
    alias2 = command2
    ...
    

    например:

    b = nmake
    c = nmake clean
    r = nmake rebuild
    
  3. Затем добавьте местоположение make-aliases.cmd на ваш %PATH% переменная, чтобы сделать его общесистемным или просто держать его в известном месте.

  4. Сделать это автоматически 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

Процедура:

  1. Создайте папку с именем «scripts» на диске C:.

  2. Внутри папки скриптов создайте com.bat

  3. Откройте com.bat

  4. Пример для запуска 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%
    
  5. Сохрани это

  6. Нажмите «Пуск»

  7. Найдите «Редактировать переменные среды»

  8. Нажмите «Дополнительно»

  9. Добавьте каталог «scripts» в PATH.

Теперь вы можете запустить команду как ее псевдоним.

Примечание. Если вы хотите добавить новый псевдоним, просто создайте новый bat-файл.

Использование doskey - верный способ сделать это, но оно сбрасывается, когда окно командной строки закрывается. Вам нужно добавить эту строку в нечто вроде.bashrc эквивалента. Итак, я сделал следующее:

  1. Добавьте "C:\Program Files (x86)\Notepad++" в системную переменную пути
  2. Сделайте копию notepad ++. Exe (конечно, в той же папке) и переименуйте ее в np.exe

Работает просто отлично!

Другие вопросы по тегам