Ваш пример set A="qwerty" && echo %A%
неверен.Переменные в приглашении cmd
/ командный файл раскрываются один раз для каждой строки / команды:
==> set "A="
==> echo %A%
%A%
==> set A="qwerty" && echo %A%
%A%
==> echo %A%
"qwerty"
SET
команда была впервые введена в MS-DOS 2.0 в марте 1983 года, в то время память и процессор были очень ограничены, и достаточно было разложить переменные один раз на строку .
AОбходной путь с помощью команды CALL
:
==> set "A="
==> echo %A%
%A%
==> set A="qwerty" && CALL echo %A%
"qwerty"
Редактировать:
Для полноты, следующий пакетный скрипт показывает механизм расширения процента и его комбинациюс помощью команды CALL
подробно (примечание удвоено %
знаки процента в пакетном файле CALL Echo %%_var%%
):
@ECHO OFF
SETLOCAL
if NOT "%~1"=="" ECHO ON
echo 1st:
Set "_var=first"
Set "_var=second" & Echo %_var% & CALL Echo %%_var%%
echo 2nd:
Set "_var=first"
Set "_var=second" & CALL Echo %%_var%% & Echo %_var%
Вывод, echo OFF
:
==> D:\bat\SO\55237418.bat
1st:
first
second
2nd:
second
first
Выход, echo ON
:
==> D:\bat\SO\55237418.bat on
==> echo 1st:
1st:
==> Set "_var=first"
==> Set "_var=second" & Echo first & CALL Echo %_var%
first
second
==> echo 2nd:
2nd:
==> Set "_var=first"
==> Set "_var=second" & CALL Echo %_var% & Echo first
second
first