![Windows cmd.exe의 동일한 명령줄 내에서 변수 설정 및 사용](https://rvso.com/image/1259401/Windows%20cmd.exe%EC%9D%98%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%EB%AA%85%EB%A0%B9%EC%A4%84%20%EB%82%B4%EC%97%90%EC%84%9C%20%EB%B3%80%EC%88%98%20%EC%84%A4%EC%A0%95%20%EB%B0%8F%20%EC%82%AC%EC%9A%A9.png)
Bash에서는 로 설정 EDITOR=vim command
하여 command
실행할 수 있지만 셸 자체 의 값에는 영향을 미치지 않습니다 . 에서 이 작업이 가능합니까 ?EDITOR
vim
EDITOR
cmd.exe
답변1
작동 cmd /C "set "EDITOR=vim" && echo %EDITOR%"
하지 않습니다.
그렇지도 않을 것이다cmd /C "setlocal ENABLEDELAYEDEXPANSION && set "EDITOR=vim" && echo !EDITOR!"
다음이 필요합니다.
/V
구분 기호로 사용하여 지연된 환경 변수 확장을 활성화하는 옵션 입니다!
.- 명령과 사이에 공백이 없습니다
&&
(또는 따옴표 추가).
그건:
C:\> cmd /V /C "set EDITOR=vim&& echo '!EDITOR!'"
'vim'
# or
C:\> cmd /V /C "set "EDITOR=vim" && echo '!EDITOR!'"
'vim'
처럼아래에 언급됨~에 의해마오주의, 그것은 cmd /V /C
,~ 아니다 cmd /C /V
(이것은~ 아니다일하다)
단일 명령의 맥락에서 실제로 이것을 원하는 실제적인 이유는 생각할 수 없습니다.
일반적으로 긴 명령줄에서 여러 번 사용되는 값을 바꿔야 할 때 이 방법이 필요합니다.
예를 들어 Nexus에 파일을 배포하려면(가독성을 위해 여러 줄로):
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/"
길고 복잡한 명령줄에서 그룹, 아티팩트(2번 사용) 및 버전을 바꾸는 대신 다음에서 편집할 수 있습니다.시작그 명령의. 매개변수 값을 조작하고 변경하는 것이 더 명확하고 쉽습니다.
답변2
아무것도 설치할 필요 없이 이와 같은 창에서 할 수 있습니다.
cmd /C "set EDITOR=vim && set"
변수 목록과 EDITOR=vim이 표시됩니다. 이제 "set"을 다시 실행하면 목록에 표시되지 않습니다.
여러 개의 &&를 사용하여 추가 명령을 추가할 수 있습니다.
cmd /C "set EDITOR=vim && do this && do that && otherstuff"
편집: /C는 실행 후 즉시 새 cmd를 종료합니다. 새 cmd로 출력을 생성하면 상위 창에 계속 표시됩니다.
실행이 끝날 때 새 cmd 창이 계속 열려 있는 경우 /K를 사용하도록 선택할 수 있습니다.
답변3
env
GnuWin32의 CoreUtils 패키지에서 이식된 유틸리티를 사용할 수 있습니다.http://gnuwin32.sourceforge.net/
- 설정해 보세요
env.exe
%PATH% 변수에 어떤 디렉터리가 있는지 확인하세요.- Linux 버전과 동일한 방식으로 사용
env EDITOR=vim command
답변4
env.cmd
Linux 명령과 거의 비슷하게 작동하는 배치 파일을 만들었습니다 env
.
echo off
setlocal
for %%f in (%*) do (
echo %%f|find "=" >nul:
if errorlevel 1 goto DoCmd
set %%f
shift
)
:DoCmd
%1 %2 %3 %4 %5 %6 %7 %8 %9
endlocal
유일한 차이점은 cmd
구문 분석 방식으로 인해 환경 할당을 인용해야 하므로 명령은 다음과 같습니다.
env "EDITOR=vim" command [up to 8 parameters]
루프 내에 명령 문자열을 구축하여 8개 매개변수 제한을 제거하도록 배치 파일을 정교하게 만들 수 있습니다 for
(지연된 확장이 필요함).