답변:
그 참고 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
으로 아래에 명시된 에 의해 maoizm , 그것은이다 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 회 사용) 및 버전을 바꾸지 않고 해당 명령 의 시작 부분 에서 편집 할 수 있습니다 . 파라미터 값을 조작하고 변경하는 것이 더 명확하고 쉽습니다.
'vim'
있지만 'vim '
마지막 명령. 끝에 공백을 피하기 위해 내부 따옴표를 추가하십시오.
cmd /v/c "..."
작동하지만 cmd /c/v "..."
실패-잘하면 15 분을 절약 할 수 있습니다.
아무것도 설치하지 않아도 이와 같은 창에서 할 수 있습니다.
cmd /C "set EDITOR=vim && set"
변수 목록이 표시되고 EDITOR = vim이 표시됩니다. 이제 "set"을 다시 실행하면 나열되지 않습니다.
여러 개의 &&를 사용하여 추가 명령을 추가 할 수 있습니다.
cmd /C "set EDITOR=vim && do this && do that && otherstuff"
편집 : / C는 실행 직후 새 cmd를 종료합니다. 새 출력으로 출력을 생성하면 부모 창에 여전히 표시됩니다.
/ K를 사용하도록 선택할 수 있으며,이 경우 실행이 끝날 때 새 cmd 창이 열린 상태로 유지됩니다.
set name=foo&&echo %name%
나 set username=foo&&echo %username%
?
env
GnuWin32 http://gnuwin32.sourceforge.net/의 CoreUtils 패키지에서 이식 된 util 을 사용할 수 있습니다.
env.exe
% PATH % 변수에 존재 하는 디렉토리 확인env EDITOR=vim command
나는 env.cmd
리눅스 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]
배치 파일은 for
루프 내에 명령 문자열을 작성하여 8 매개 변수 제한을 제거하기 위해 정교해질 수 있습니다 (지연된 확장이 필요함).
%*
두 번째 줄 (예 : :DoCmd
레이블 다음 줄)로 사용하지 않는 이유는 무엇 입니까?
%*
은 IS 원래 파라미터리스트 :이 영향을받지 않는다 shift
(달리 $*
유닉스).