Aliasy w wierszu polecenia systemu Windows

Dodałem notepad++.exe do mojej ścieżki w zmiennych środowiskowych.

Teraz w wierszu polecenia, notepad++.exe filename.txt otwiera filename.txt. Ale chcę zrobić tylko np filename.txt, aby otworzyć plik.

Próbowałem użyć DOSKEY np=notepad++. Ale to po prostu doprowadzenie do przodu już otwarty notatnik++ bez otwierania pliku. Jak mogę otworzyć plik?

Dzięki.
Author: brian d foy, 2013-12-12

14 answers

Aby dodać do odpowiedzi Josha,

Możesz utworzyć alias (- y) persistent wykonując następujące kroki,

  1. Utwórz .bat lub .plik cmd z poleceniami DOSKEY.
  2. Uruchom regedit i przejdź do HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  3. Dodaj wpis z nazwą AutoRun i pełną ścieżką twojego .bat/plik cmd.

    Na przykład, %USERPROFILE%\alias.cmd, zastąpienie początkowego segmentu ścieżki {[6] } jest przydatne do synchronizacji między wieloma maszyny.

W ten sposób przy każdym uruchomieniu cmd aliasy są ładowane.

Dla kompletności, oto szablon do zilustrowania rodzaju aliasów, które można uznać za przydatne.

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

  • zauważ, że składnia $* działa zarówno po łańcuchu katalogów, jak i po pliku wykonywalnym, który pobiera argumenty. Tak więc w powyższym przykładzie, zdefiniowane przez użytkownika polecenie dropbox research wskazuje na ten sam katalog co research.
  • Jak zauważył Rivenfall, dobrym pomysłem jest Dołącz polecenie, które pozwala na wygodną edycję env.plik cmd. Patrz alias powyżej. Jeśli jesteś w sesji cmd, wprowadź cmd, aby ponownie uruchomić cmd i przeładować env.plik cmd.

Kiedy szukałam w Internecie odpowiedzi na to pytanie, w jakiś sposób dyskusje koncentrowały się albo tylko na wytrwałości, albo na pewnym użyciu tylko DOSKEY ' a. Mam nadzieję, że ktoś skorzysta z tych dwóch aspektów bycia tutaj razem!


Oto plik .reg, który pomoże Ci zainstalować env.cmd. Jest teraz ustawiony jako przykład do folderu dropbox, jak sugerowano powyżej.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="%USERPROFILE%\\Dropbox\\dev\\misc\\env.cmd"
 285
Author: Argyll,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-15 05:08:49

Musisz podać parametry, spróbuj tego:

doskey np=notepad++.exe $*

Edit (odpowiadając na komentarz Romonova) P: Czy Jest jakiś sposób, aby wiersz polecenia zapamiętał, żebym nie musiał go uruchamiać za każdym razem, gdy otwieram nowy wiersz polecenia?

doskey jest poleceniem tekstowym, które jest interpretowane przez procesor poleceń (np. cmd.exe), nie potrafi zmodyfikować stanu w jakimś innym procesie (szczególnie takim, który jeszcze się nie rozpoczął).

Ludzie, którzy używają doskey aby skonfigurować początkowe środowiska powłoki komend, zazwyczaj należy użyć opcji /K (często za pomocą skrótu), aby uruchomić plik wsadowy, który wykonuje wszystkie typowe ustawienia (np. ustawia tytuł okna, kolory itp.).

cmd.exe /K env.cmd

Env.cmd:

title "Foo Bar"
doskey np=notepad++.exe $*
...
 209
Author: josh poley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-15 01:03:40

Jeśli szukasz prostych poleceń, możesz wykonać następujące kroki:

  1. Utwórz folder o nazwie C:\Aliases
  2. Dodaj C:\Aliases do twojej ścieżki (więc wszelkie pliki w niej będą znalezione za każdym razem)
  3. Utwórz .bat plik w C:\Aliases dla każdego z aliasów, które chcesz

Może przesada, ale w przeciwieństwie do (inaczej doskonałej) odpowiedzi od @ Argyll, to rozwiązuje problem tego ładowania za każdym razem.

Na przykład, I mieć plik o nazwie dig2.bat zawierający:

@echo off
echo.
dig +noall +answer %1

Twój np plik będzie miał następujące:

@echo off
echo.
notepad++.exe %1

FWIW, mam około 20 aliasów (osobne .pliki bat) w moim C:\Aliases katalog - w razie potrzeby tworzę nowe. Może nie jest schludny, ale działa dobrze.

UPDATE: zgodnie z doskonałą sugestią użytkownika @Mav, jest jeszcze lepiej używać %* zamiast %1, więc możesz przekazać wiele plików do polecenia, np.:

@echo off
echo.
notepad++.exe %*

W ten sposób możesz to zrobić:

np c:\temp\abc.txt c:\temp\def.txt c:\temp\ghi.txt

I otworzy wszystkie 3 pliki.

 50
Author: roryhewitt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-04 16:20:53

Biorąc pod uwagę, że dodałeś notepad++.exe do zmiennej PATH, to bardzo proste. Utwórz plik w folderze System32 o nazwie np.bat o następującym kodzie:

@echo off
call notepad++.exe %*

%* przekazuje wszystkie argumenty, które podajesz np poleceniu notepad++.exe.

EDIT: Będziesz potrzebował dostępu administratora, aby zapisać pliki w folderze System32, który był dla mnie trochę nieciekawy. Po prostu utworzyłem plik gdzie indziej i przeniosłem go ręcznie do System32.

 27
Author: Velixo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 17:58:56

Alternatywnie możesz użyć cmder co pozwala na dodawanie aliasów tak jak linux:

alias subl="C:\Program Files\Sublime Text 3\subl.exe" $*
 23
Author: Nishant Shreshth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-24 10:24:40

Możesz również utworzyć alias.cmd w ścieżce (na przykład C:\Windows) z poleceniem

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

Kiedy to zrobisz, możesz zrobić coś takiego:

alias nameOfYourAlias commands to run 

I po tym można wpisać w wierszu comman

nameOfYourAlias 

To wykona

commands to run 

Ale dla mnie najlepszym sposobem jest dodanie ścieżki programu.

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

And now I run sublime as

subl index.html
 13
Author: Николай Михно,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-04 18:08:14

Aliasy konsoli w Windows 10

Aby zdefiniować Alias konsoli, użyj Doskey.exe, aby utworzyć makro lub użyj funkcji AddConsoleAlias.

Doskey

doskey test=cd \a_very_long_path\test

Aby również przekazać parametry dodaj $* na końcu: doskey short=longname $*

AddConsoleAlias

AddConsoleAlias( TEXT("test"), 
                 TEXT("cd \\<a_very_long_path>\\test"), 
                 TEXT("cmd.exe"));

Więcej informacji tutaj aliasy konsoli, Doskey, parametry

 6
Author: Qwerty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-29 08:43:34

Właściwie, to powiem ci coś lepszego i opowiem ci o małej technice, której używałem od czasu, gdy programowałem na Amidze. Na dowolnym nowym systemie, czy to osobistym, czy zawodowym, krok pierwszy polega na utworzeniu dwóch folderów: C:\BIN oraz C:\BATCH. Następnie zmodyfikuj instrukcję path, aby umieścić oba na początku w kolejności C:\BATCH;C:\BIN; [reszta ścieżki].

Po zrobieniu tego, jeśli masz mało narzędzi, do których potrzebujesz dostępu, po prostu skopiuj je do C:\BIN folder i są na twojej drodze. Aby tymczasowo zastąpić te przydziały, możesz dodać plik wsadowy o tej samej nazwie co plik wykonywalny do C:\BATCH folder i ścieżka znajdzie go przed plikiem w C:\BIN. Powinno pokryć wszystko, co będziesz musiał zrobić.

Oczywiście w dzisiejszych czasach kanonicznym poprawnym sposobem na to jest stworzenie symbolicznego połączenia z plikiem, ale obowiązuje ta sama zasada. Jest też trochę dodatkowego bonusu. Jeśli chcesz coś dodać systemu, który koliduje z czymś już na ścieżce, umieszczając go w C:\BIN lub C:\Batch folder po prostu opróżni oryginał-pozwalając na tymczasowe lub stałe nadpisanie rzeczy lub zmianę nazw na nazwy, z którymi czujesz się bardziej komfortowo - bez faktycznego zmieniania oryginału.

 3
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-08 19:16:51

Rozszerzanie naroryhewitt odpowiedz

Zaletą używania .pliki cmd nad DOSKEY jest to, że te "aliasy" są następnie dostępne w innych powłok, takich jak PowerShell lub WSL (Podsystem Windows dla Linuksa).

Jedyne, co mamcha z używaniem tych poleceń w bash jest to, że może to zająć trochę więcej konfiguracji, ponieważ może być konieczne wykonanie manipulacji ścieżką przed wywołaniem "aliasu".

Np. mam vs. cmd który jest moim "aliasem" do edycji pliku w 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

Który uruchamia VS (w tym przypadku VS2012 - ale dostosuj do smaku) używając mojego "normalnego" projektu bez podanego pliku, ale gdy dany plik będzie próbował dołączyć do uruchomionego VS otwarcie tego pliku "w tym projekcie"zamiast rozpoczynać nową instancję VS.

Za używanie tego z Basha dodaję dodatkowy poziom indrection, ponieważ "vs Myfile" nie zawsze działa

alias vs='/usr/bin/run_visual_studio.sh'

Który dostosowuje ścieżki przed wywołaniem vs. cmd

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

Więc w ten sposób mogę just do

vs SomeFile.txt

W wierszu poleceń, Power Shell lub bash i otwiera się w moim uruchomionym Visual Studio do edycji (co po prostu oszczędza mój biedny mózg od konieczności radzenia sobie z poleceniami VI lub takimi, kiedy właśnie edytowałem w VS przez wiele godzin).

 1
Author: Alex Perry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-14 20:02:02

Skoro już masz notepad++.exe na swojej drodze. Utwórz skrót w folderze o nazwie np i wskaż go na notepad++.exe.

 0
Author: Shravan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-24 12:21:36

Najpierw możesz utworzyć plik o nazwie np.cmd i umieść go w folderze, który znajduje się na liście wyszukiwania ścieżek. Następnie Edytuj np.plik cmd jak poniżej:

@echo off
notepad++.exe
 0
Author: 迷茫的量子,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-11 09:20:30

To rozwiązanie nie jest trafne, ale służy celowi w niektórych przypadkach.

Najpierw Utwórz folder i dodaj go do ścieżki systemowej. Przejdź do pliku wykonywalnego dowolnego programu, dla którego chcesz utworzyć alias. Kliknij prawym przyciskiem myszy i wyślij na pulpit(Utwórz skrót). Zmień nazwę skrótu na dowolną nazwę aliasu. Teraz skorzystaj ze skrótu i umieść w swoim folderze.

Z polecenia run prompt możesz wpisać nazwę skrótu bezpośrednio i możesz otworzyć program. Ale od wiersz polecenia, musisz dołączyć .LNK i naciśnij enter, program zostanie otwarty.

 0
Author: BarathVutukuri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-13 07:49:14

Chcesz utworzyć alias po prostu wpisując:

c:\>alias kgs kubectl get svc

Created alias for kgs=kubectl get svc

I używaj pseudonimu w następujący sposób:

c:\>kgs alfresco-svc

NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
alfresco-svc   ClusterIP   10.7.249.219   <none>        80/TCP    8d

Wystarczy dodać następujący plik alias.bat do ścieżki. Po prostu tworzy dodatkowe pliki wsadowe w tym samym katalogu, co sam.

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

Przykład pliku wsadowego o nazwie kgs.bat to:

@echo off 
echo. 
kubectl get svc %* 
 0
Author: Steaton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-07 13:15:55

Użycie doskey jest właściwym sposobem na to, ale resetuje się, gdy okno wiersza polecenia jest zamknięte. Musisz dodać tę linijkę do czegoś takiego .odpowiednik bashrc. Zrobiłem więc:

  1. Dodaj "C:\Program Files (x86) \ Notepad++" to system path variable
  2. Zrób kopię notepad++.exe (oczywiście w tym samym folderze) i zmienić jego nazwę na np.exe

Działa świetnie!

 -4
Author: balajimc55,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-13 18:08:14