W Bash mogę zrobić EDITOR=vim command
i command
będę działać z EDITOR
ustawionym na vim
, ale nie wpłynie to na wartość EDITOR
samej powłoki. Czy można to zrobić w cmd.exe
?
źródło
W Bash mogę zrobić EDITOR=vim command
i command
będę działać z EDITOR
ustawionym na vim
, ale nie wpłynie to na wartość EDITOR
samej powłoki. Czy można to zrobić w cmd.exe
?
Pamiętaj, że cmd /C "set "EDITOR=vim" && echo %EDITOR%"
to nie zadziała.
Nie zrobiłbym tegocmd /C "setlocal ENABLEDELAYEDEXPANSION && set "EDITOR=vim" && echo !EDITOR!"
Jaką /V
opcją byłoby włączenie opóźnionego rozszerzania zmiennych środowiskowych za pomocą !
ogranicznika.
C:\> cmd /V /C "set EDITOR=vim&& echo !EDITOR!"
vim
Jak wspomniano poniżej przez maoizm , to jest cmd /V /C
, nie cmd /C /V
(co nie działa)
Nie mogę wymyślić żadnego praktycznego powodu, dla którego kiedykolwiek chciałbyś tego w kontekście jednego polecenia
Zazwyczaj jest to potrzebne, gdy trzeba zastąpić wartość używaną wielokrotnie w długim wierszu polecenia.
Na przykład, aby wdrożyć plik w Nexusie (w wielu wierszach dla czytelności):
cmd /v /c "set g=com.agroup&& set a=anArtifact&& set v=1.1.0&& \
mvn deploy:deploy-file -Dfile=C:\path\!a!-!v!.jar \
-Dpackaging=jar -DgroupId=!g! -DartifactId=!a! -Dversion=!v! \
-DrepositoryId=nexus
-Durl=http://myserver/nexus/content/repositories/my-repo/"
Zamiast konieczności zastępowania grupy, artefaktu (używanego 2 razy) i wersji w długim i złożonym wierszu poleceń, możesz edytować je na początku tego polecenia. Przejrzystsze / łatwiejsze do manipulowania i zmiany wartości parametrów.
'vim'
ale'vim '
na ostatnim poleceniu. Dodaj cytaty wewnętrzne, aby na końcu uniknąć spacji.cmd /v/c "..."
działa, alecmd /c/v "..."
kończy się niepowodzeniem - mam nadzieję, że może zaoszczędzić 15 minutMożesz to zrobić w systemie Windows, bez potrzeby instalowania czegokolwiek.
Zobaczysz listę zmiennych i zobaczysz EDITOR = vim, teraz uruchom ponownie „set” i nie będzie na liście.
Możesz dodać wiele znaków &&, aby dodać dodatkowe polecenia:
EDYCJA: / C kończy pracę z nowym cmd od razu po uruchomieniu, jeśli utworzysz dane wyjściowe przy użyciu nowego, nadal będzie ono widoczne w oknie nadrzędnym.
Możesz zdecydować się na użycie / K, w którym to przypadku nowe okno cmd pozostaje otwarte na końcu przebiegu.
źródło
set name=foo&&echo %name%
czyset username=foo&&echo %username%
?możesz użyć przeniesionego narzędzia
env
z pakietu CoreUtils w GnuWin32 http://gnuwin32.sourceforge.net/env.exe
istnieje zmienna% PATH%env EDITOR=vim command
źródło
Podniosłem plik wsadowy,
env.cmd
który działa mniej więcej tak, jakenv
polecenie Linux : -Jedyną różnicą jest to, że ze względu na sposób
cmd
analizowania przypisania środowiska muszą być cytowane, więc twoje polecenie będzie:Plik wsadowy można opracować w celu usunięcia ograniczenia 8-parametrowego poprzez utworzenie ciągu poleceń w
for
pętli (konieczne będzie opóźnione rozszerzenie).źródło
%*
jako przedostatniej linii (tj. Następnej po:DoCmd
etykiecie), aby pozwolić na bardzo długie polecenia użytkownika?%*
jest to oryginalna lista parametrów: nie ma na nią wpływushift
(inaczej niż$*
w Uniksie).