В Bash я могу сделать EDITOR=vim command
и command
буду работать с EDITOR
установленным значением vim
, но это не повлияет на значение EDITOR
в самой оболочке. Возможно ли сделать это в cmd.exe
?
источник
В Bash я могу сделать EDITOR=vim command
и command
буду работать с EDITOR
установленным значением vim
, но это не повлияет на значение EDITOR
в самой оболочке. Возможно ли сделать это в cmd.exe
?
Обратите внимание, 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 "..."
не получается - надеюсь, этоВы можете сделать это в Windows, как это, не нужно ничего устанавливать.
Вы увидите список переменных и увидите EDITOR = vim, теперь снова запустите «set», и его не будет в списке.
Вы можете сделать несколько && для добавления дополнительных команд:
РЕДАКТИРОВАТЬ: / C выходит из нового cmd сразу после запуска, если вы производите вывод с новым, он все еще будет виден в родительском окне.
Вы можете использовать / K, и в этом случае новое окно cmd остается открытым в конце цикла.
источник
set name=foo&&echo %name%
илиset username=foo&&echo %username%
?вы можете использовать перенесенный
env
утилит из пакета CoreUtils в GnuWin32 http://gnuwin32.sourceforge.net/env.exe
существует в переменной% PATH%env EDITOR=vim command
источник
Я поднял пакетный файл,
env.cmd
который работает более или менее как команда Linuxenv
: -Единственное отличие состоит в том, что из-за способа
cmd
синтаксического анализа, назначения среды должны быть заключены в кавычки, поэтому ваша команда будет:Пакетный файл может быть разработан для снятия ограничения на 8 параметров путем создания командной строки в
for
цикле (потребуется отложенное расширение).источник
%*
в качестве предпоследней строки (т. Е. Строку после:DoCmd
метки), чтобы учесть очень длинные пользовательские команды?%*
это оригинальный список параметров: он не подвержен влияниюshift
(в отличие от$*
Unix).