Можно ли установить переменную окружения и отобразить ее в однострочном пакетном скрипте? - PullRequest
2 голосов
/ 28 апреля 2010
set A=2 && echo %A%

Это не отображает A как 2 в Windows. Есть ли способ сделать это?

A=2 ; echo $A

работает в Bash. Я хочу подобное поведение на Windows

Ответы [ 3 ]

1 голос
/ 29 апреля 2010

Я уверен, что есть много способов сделать это, вот два из них:

  • setlocal ENABLEDELAYEDEXPANSION&set "foo=bar baz"&echo.!foo!&endlocal
  • set "foo=bar baz"&for /F "tokens=1,* delims==" %%A in ('set foo') do if "%%~A"=="foo" echo.%%B

Редактировать: добавлена ​​проверка, чтобы "фильтровать" набор результатов для второго решения, спасибо Йоханнес Рёссель

0 голосов
/ 10 февраля 2017

Добавляя к @ Андерсу ответы , я настроил его решение для чего-то, что дает вам немного больше гибкости:

set foo=bar&for /f %a in ('echo ^%foo^%') do @echo %a

Выход:

bar

Это также позволяет вам выполнять замену строки:

set foo=bar&for /f %a in ('echo ^%foo^:a^=o^%') do @echo %a

Выход:

bor

Редактировать: добавлены некоторые символы, чтобы исправить замечание @ jeb.

0 голосов
/ 29 апреля 2010

Обратите внимание на !, окружающий A вместо %.

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET A=2 & ECHO !A!
ENDLOCAL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...