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


я добавил notepad++.exe к моему пути в переменных окружения.

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

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

спасибо.

14 231

14 ответов:

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

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

  1. создать .летучая мышь или. файл cmd с DOSKEY команды.
  2. запустите regedit и перейдите в HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  3. добавить строковое значение с именем AutoRun и полное путь свой .летучая мышь./файл 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.
  • как отметил Ривенфолл, это хорошая идея, чтобы включить команду, которая позволяет для удобного редактирования env.файл cmd. Смотрите alias выше. Если вы находитесь в сеансе cmd, введите cmd чтобы перезапустить cmd и перезагрузить env.файл cmd.

когда я искал в интернете ответ на этот вопрос, каким-то образом дискуссии были либо сосредоточены только на постоянстве, либо на некотором использовании только DOSKEY. Я надеюсь, что кто-то будет извлеките пользу из этих двух аспектов, находясь вместе здесь!


здесь .reg файл, который поможет вам установить env.cmd. Теперь он установлен в качестве примера для папки dropbox, как было предложено выше.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="%USERPROFILE%\Dropbox\dev\misc\env.cmd"

вам нужно передать параметры, попробуйте это:

doskey np=notepad++.exe $*

Edit (отвечая на комментарий Ромонова) Q:есть ли способ заставить командную строку запомнить, поэтому мне не нужно запускать это каждый раз, когда я открываю новую командную строку?

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. создать .летучая мышь file in C:\Aliases для каждого из псевдонимов вы хотите

возможно, излишне, но в отличие от (в противном случае отличный) ответ от @Argyll, это решает проблему это загрузка каждый раз.

например, у меня есть файл с названием dig2.летучая мышь С в нем следующее:

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

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

@echo off
call notepad++.exe %*

The %* передает все аргументы, которые вы даете до .

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

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

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

кроме того, вы можете создать псевдоним.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 чтобы создать макрос, или используйте .

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"));

подробнее здесь Консоль Псевдонимы,Doskey,параметры

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

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

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

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

преимущество использования .cmd-файлы через DOSKEY - это то, что эти "псевдонимы" затем доступны в других оболочках, таких как PowerShell или WSL (Подсистема Windows для Linux).

единственная проблема с использованием этих команд в bash заключается в том, что это может занять немного больше времени, так как вам может потребоваться выполнить некоторые манипуляции с путями перед вызовом вашего "псевдонима".

например, у меня есть vs cmd, который является моим "псевдонимом" для редактирования файла в Визуальная Студия

@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'

который регулирует пути перед вызовом и УМК

#!/bin/bash
cmd.exe /C 'c:\Windows\System32\vs.cmd' "`wslpath.sh -w -r `"

таким образом, я могу просто сделать

vs SomeFile.txt

в командной строке, Power Shell или bash, и он открывается в моей запущенной Visual Studio для редактирования (что просто спасает мой бедный мозг от необходимости иметь дело с командами VI или некоторыми такими, когда я только что редактировал в VS в течение нескольких часов).

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

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

@echo off
notepad++.exe

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

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

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

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

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

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

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

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