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?
14 answers
Aby dodać do odpowiedzi Josha,
Możesz utworzyć alias (- y) persistent wykonując następujące kroki,
- Utwórz .bat lub .plik cmd z poleceniami
DOSKEY
. - Uruchom regedit i przejdź do
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
-
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 poleceniedropbox research
wskazuje na ten sam katalog coresearch
. - 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"
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 $*
...
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:
- Utwórz folder o nazwie C:\Aliases
- Dodaj C:\Aliases do twojej ścieżki (więc wszelkie pliki w niej będą znalezione za każdym razem)
- 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.
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.
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" $*
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
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
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.
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).
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
.
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
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.
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 %*
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:
- Dodaj "C:\Program Files (x86) \ Notepad++" to system path variable
- Zrób kopię notepad++.exe (oczywiście w tym samym folderze) i zmienić jego nazwę na np.exe
Działa świetnie!
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