No Bash, eu posso fazer EDITOR=vim command
e command
será executado com EDITOR
set como vim
, mas isso não afetará o valor do EDITOR
próprio shell. É possível fazer isso cmd.exe
?
fonte
No Bash, eu posso fazer EDITOR=vim command
e command
será executado com EDITOR
set como vim
, mas isso não afetará o valor do EDITOR
próprio shell. É possível fazer isso cmd.exe
?
Observe que cmd /C "set "EDITOR=vim" && echo %EDITOR%"
não funcionaria.
Nemcmd /C "setlocal ENABLEDELAYEDEXPANSION && set "EDITOR=vim" && echo !EDITOR!"
O que seria a /V
opção, para permitir a expansão atrasada da variável de ambiente usando !
como delimitador.
C:\> cmd /V /C "set EDITOR=vim&& echo !EDITOR!"
vim
Como observado abaixo por maoizm , é cmd /V /C
, não cmd /C /V
(que não funciona)
Não consigo pensar em nenhuma razão prática para você realmente querer isso dentro do contexto de um único comando
Normalmente, você precisa disso quando precisar substituir um valor usado várias vezes em uma longa linha de comando.
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 precisar substituir o grupo, o artefato (usado 2 vezes) e a versão em uma linha de comando longa e complexa, você pode editá-los no início do referido comando. É mais claro / fácil manipular e alterar os valores dos parâmetros.
'vim'
mas'vim '
no último comando. Adicione as aspas internas para evitar o espaço no final.cmd /v/c "..."
funciona, mascmd /c/v "..."
não - espero que ele pode poupar 15 minutosVocê pode fazê-lo em janelas como essa, sem necessidade de instalar nada.
Você verá uma lista de variáveis e verá EDITOR = vim, agora execute "set" novamente e não será listado.
Você pode executar vários && 's para adicionar comandos adicionais:
EDIT: / C sai do novo cmd imediatamente após a execução, se você produzir saída com o novo, ele ainda estará visível na janela pai.
Você pode optar por usar / K; nesse caso, a nova janela do cmd permanece aberta no final da execução.
fonte
set name=foo&&echo %name%
ouset username=foo&&echo %username%
?você pode usar o
env
utilitário portado do pacote CoreUtils no GnuWin32 http://gnuwin32.sourceforge.net/env.exe
existe a variável% PATH%env EDITOR=vim command
fonte
Eu bati um arquivo em lotes
env.cmd
que funciona mais ou menos como oenv
comando Linux : -A única diferença é que, devido à maneira como
cmd
analisa, as atribuições do ambiente precisam ser citadas; portanto, seu comando seria:O arquivo em lote pode ser elaborado para remover a restrição de 8 parâmetros, construindo a cadeia de comandos dentro do
for
loop (será necessária expansão atrasada).fonte
%*
como a penúltima linha (ou seja, a que segue o:DoCmd
rótulo) para permitir comandos de usuário muito longos?%*
é a lista de parâmetros original : ela não é afetada porshift
(ao contrário$*
do Unix).