En Bash, puedo hacer EDITOR=vim command
y command
se ejecutará con EDITOR
set to vim
, pero esto no afectará el valor de EDITOR
en el propio shell. ¿Es posible hacer esto en cmd.exe
?
fuente
En Bash, puedo hacer EDITOR=vim command
y command
se ejecutará con EDITOR
set to vim
, pero esto no afectará el valor de EDITOR
en el propio shell. ¿Es posible hacer esto en cmd.exe
?
Tenga en cuenta que cmd /C "set "EDITOR=vim" && echo %EDITOR%"
no funcionaría.
Tampoco lo haríacmd /C "setlocal ENABLEDELAYEDEXPANSION && set "EDITOR=vim" && echo !EDITOR!"
Cuál sería la /V
opción, para permitir la expansión variable de entorno diferido utilizando !
como delimitador.
C:\> cmd /V /C "set EDITOR=vim&& echo !EDITOR!"
vim
Como se señala a continuación por maoizm , es cmd /V /C
, no cmd /C /V
(que no funcionaría)
No puedo pensar en ninguna razón práctica por la que realmente quieras esto en el contexto de un solo comando
Normalmente, necesita esto cuando tiene que reemplazar un valor utilizado varias veces en una línea de comando larga.
Por ejemplo, para implementar un archivo en Nexus (en varias líneas para facilitar la lectura):
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/"
En lugar de tener que reemplazar el grupo, el artefacto (usado 2 veces) y la versión en una línea de comando larga y compleja, puede editarlos al comienzo de dicho comando. Es más claro / fácil manipular y cambiar los valores de los parámetros.
'vim'
sino'vim '
en el último comando. Agregue las comillas internas para evitar el espacio al final.cmd /v/c "..."
funciona, perocmd /c/v "..."
falla - espero que pueda ahorrarte 15 minutosPuede hacerlo en ventanas como esta sin necesidad de instalar nada.
Verá una lista de variables y verá EDITOR = vim, ahora ejecute "set" nuevamente y no aparecerá en la lista.
Puede hacer múltiples && 's para agregar comandos adicionales:
EDITAR: / C sale del nuevo cmd inmediatamente después de ejecutarse, si produce una salida con el nuevo, seguirá siendo visible en la ventana principal.
Puede optar por usar / K, en cuyo caso la nueva ventana cmd permanece abierta al final de la ejecución.
fuente
set name=foo&&echo %name%
oset username=foo&&echo %username%
?puede usar la utilidad portada
env
del paquete CoreUtils en GnuWin32 http://gnuwin32.sourceforge.net/env.exe
existe en la variable% PATH%env EDITOR=vim command
fuente
He generado un archivo por lotes
env.cmd
que funciona más o menos como elenv
comando de Linux :La única diferencia es que, debido a la forma en que se
cmd
analiza, se deben citar las asignaciones de entorno, por lo que su comando sería:El archivo por lotes podría elaborarse para eliminar la restricción de 8 parámetros mediante la construcción de la cadena de comandos dentro del
for
bucle (se necesitará una expansión retardada).fuente
%*
como penúltima línea (es decir, la que está después de la:DoCmd
etiqueta) para permitir comandos de usuario muy largos?%*
es la lista de parámetros original : no se ve afectada porshift
(a diferencia$*
de Unix).