Командная строка Windows: установка глобальных переменных друг для друга - PullRequest
0 голосов
/ 15 декабря 2010

сценарий дополнительно обновлен

Привет всем:

Я пытаюсь установить глобальную переменную на другую в языке командной строки Windows. Синтаксис, который я пробовал, выглядит следующим образом:

:: these are global vars
SET varThree=%varOne%\something
SET varOne=
SET varTwo=2

:Section
SET varOne=%varTwo%
::more setting of varOne to other global variables
GOTO Section2

:Section2
echo %varThree%
GOTO cleanup

:cleanup
SET varThree=
SET varTwo=
SET varOne=

Значение varOne, похоже, теряется при отображении% varThree%.

Мне было интересно, как правильно установить вышеуказанную переменную?

ТИА.

EDIT: Раздел очистки был там, чтобы обеспечить очистку переменных при выходе из программы. Когда я удалил его, потребовался второй запуск, чтобы varOne потерял свое состояние. Точно так же, когда я снова представил его, потребовался второй прогон, чтобы состояние varOne вернулось. Есть идеи, почему это происходит?

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010

Вы не используете знаки процента на левой стороне.Кроме того, вы можете прочитать о переменных с расширенными задержками (например,! VarTwo! Вместо% varTwo%), поскольку у вас могут возникнуть проблемы с неправильными расширениями.См. Эту ссылку о отложенных расширениях: Cmd.exe Документация

Редактировать: Вы также пропускаете "Набор" слева, поэтому:Должно быть действительно:

:Section
Set varOne=%varTwo%
1 голос
/ 17 января 2011

Вы ошибаетесь в поиске синтаксиса "посткомпиляции". В вашем сценарии

SET varThree=%varOne%\something

вызывает varThree, установленное с "\ Чем-то", потому что varOne еще не определен. Говоря о вашем сценарии, вы должны использовать

echo %varOne%%varThree%

в ": section2".

1 голос
/ 15 декабря 2010

Попробуйте:

varOne=%varTwo%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...