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

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

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

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

Спасибо.

Ответ 1

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

Вы можете сделать псевдоним постоянными, выполнив следующие действия:

  1. Создайте файл .bat или .cmd с помощью команд DOSKEY.
  2. Запустите regedit и перейдите к HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  3. Добавьте запись строкового значения с именем AutoRun и полным путем к вашему файлу .bat/.cmd.

    Например, %USERPROFILE%\alias.cmd, замена начального сегмента пути на %USERPROFILE% полезна для синхронизации между несколькими машинами.

Таким образом, при каждом запуске cmd загружаются псевдонимы.

Для Windows 10 вместо этого добавьте запись в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor.

Для полноты рассмотрим шаблон, который иллюстрирует виды псевдонимов, которые могут оказаться полезными.

@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.
  • Как указал Rivenfall, хорошей идеей будет включить команду, которая позволяет удобно редактировать файл 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"

Ответ 2

Вам нужно передать параметры, попробуйте следующее:

doskey np=notepad++.exe $*

Изменить (в ответ на комментарий Ромонова). Q: Я могу заставить командную строку помнить, поэтому мне не нужно запускать ее каждый раз при открытии новой командной строки?

doskey - текстовая команда, которая интерпретируется командным процессором (например, cmd.exe), он не может знать, как изменить состояние в каком-либо другом процессе (особенно тот, который еще не запущен).

Люди, которые используют doskey для настройки своих исходных оболочек командной оболочки, обычно используют параметр /K (часто с помощью ярлыка) для запуска пакетного файла, который выполняет всю общую настройку (например, название окна, цвета и т.д.).

cmd.exe /K env.cmd

env.cmd:

title "Foo Bar"
doskey np=notepad++.exe $*
...

Ответ 3

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

  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 файла.

Ответ 4

В качестве альтернативы вы можете использовать cmder, который позволяет добавлять псевдонимы так же, как linux:

alias subl="C:\Program Files\Sublime Text 3\subl.exe" $*

Ответ 5

Учитывая, что вы добавили notepad ++.exe в свою переменную PATH, это очень просто. Создайте файл в папке System32 с именем np.bat со следующим кодом:

@echo off
call notepad++.exe %*

%* передает все аргументы команды np команде notepad++.exe.

EDIT: Вам понадобится доступ администратора для сохранения файлов в папку System32, что для меня было немного неудобным. Я просто создал файл где-то еще и переместил его в System32 вручную.

Ответ 6

Кроме того, вы можете создать alias.cmd в своем пути (например, C:\Windows) с помощью команды

@echo %2 %3 %4 %5 %6 > %windir%\%1.cmd

Как только вы это сделаете, вы можете сделать что-то вроде этого:

alias nameOfYourAlias commands to run 

И после этого вы можете ввести строку comman

nameOfYourAlias 

это выполнит

commands to run 

НО лучший способ для меня - просто добавить путь к программе.

setx PATH "%PATH%;%ProgramFiles%\Sublime Text 3" /M 

И теперь я запускаю возвышенное как

subl index.html

Ответ 7

Консольные псевдонимы в 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

Ответ 8

На самом деле, я пойду к вам лучше и расскажу о небольшой технике, которую я использовал с тех пор, как программировал на Amiga. В любой новой используемой вами системе, будь то личной или профессиональной, на первом этапе необходимо создать две папки: C:\BIN и C:\BATCH. Затем измените ваш путь, чтобы поместить оба в начале в порядке C:\BATCH;C:\BIN;[rest of path].

Сделав это, если у вас есть несколько ненужных утилит, к которым вам нужен доступ, просто скопируйте их в папку C:\BIN и они будут на вашем пути. Чтобы временно переопределить эти назначения, вы можете добавить пакетный файл с тем же именем, что и исполняемый файл, в папку C:\BATCH и путь найдет его перед файлом в C:\BIN. Он должен охватывать все, что вам может понадобиться.

Конечно, в наши дни канонически правильным способом сделать это было бы создание символического перехода к файлу, но применяется тот же принцип. Также есть небольшой дополнительный бонус. Если вы хотите поместить что-то в систему, что конфликтует с чем-то, уже находящимся в пути, размещение этого в папке C:\BIN или C:\Batch будет просто заменять оригинал - что позволит вам переопределить материал временно или постоянно, или переименуйте вещи в имена, которые вам удобнее - без изменения оригинала.

Ответ 9

Вы хотите создать псевдоним, просто набрав:

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 %* 

Ответ 10

Расширение на roryhewitt ответа.

Преимущество использования файлов.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 в течение нескольких часов).

Ответ 11

Это решение не является подходящим, но служит в некоторых случаях.

Сначала создайте папку и добавьте ее на свой системный путь. Перейдите к исполняемому файлу любой программы, для которой вы хотите создать псевдоним. Щелкните правой кнопкой мыши и отправьте на Рабочий стол (Создать ярлык). Переименуйте ярлык на любое имя псевдонима. Теперь возьмите ярлык и поместите его в свою папку.

В командной строке вы можете ввести имя ярлыка напрямую, и вы можете открыть программу для вас. Но из командной строки вам нужно добавить .lnk и нажать enter, программа будет открыта.

Ответ 12

Поскольку у вас уже есть notepad++.exe на вашем пути. Создайте ярлык в этой папке с именем np и укажите его на notepad++.exe.

Ответ 13

Сначала вы можете создать файл с именем np.cmd и поместить его в папку, которая находится в списке поиска PATH. Затем отредактируйте файл np.cmd, как показано ниже:

@echo off
notepad++.exe

Ответ 14

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

  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.

Ответ 15

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

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

Работает отлично!