Observe que cmd /C "set "EDITOR=vim" && echo %EDITOR%"
não funcionaria.
Nem cmd /C "setlocal ENABLEDELAYEDEXPANSION && set "EDITOR=vim" && echo !EDITOR!"
Qual seria a opção /V
, para ativar a expansão da variável de ambiente atrasada usando !
como delimitador.
C:\> cmd /V /C "set EDITOR=vim&& echo !EDITOR!"
vim
Como mencionado abaixo por maoizm , é cmd /V /C
, não cmd /C /V
(o que não funciona)
I can't think of any practical reason you'd ever actually want this within the context of a single command
Normalmente, você precisa disso quando precisar substituir um valor usado várias vezes em uma linha de comando longa.
Por exemplo, para implantar um arquivo no Nexus (em várias linhas para facilitar a leitura):
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/"
Em vez de ter que substituir grupo, artefato (usado 2 vezes) e versão em uma linha de comando longa e complexa, você pode editá-los no início do dito comando. É mais fácil / mais fácil manipular e alterar os valores dos parâmetros.