Установить переменную в блоке if - PullRequest
12 голосов
/ 18 октября 2011

Следующая программа всегда повторяет "machine-abc" в конце:

@echo Off
set dropLoc=machine-abc
IF %computername% == "xyz" (
 %dropLoc% = machine-xyz
) 
echo %dropLoc%

Это проблема с областью действия?Имеет ли переменная dropLoc в операторе if другую область видимости?Я пробовал следующее для решения этой проблемы:

@echo Off
set dropLoc=machine-abc
IF %computername% == "xyz" (
 !dropLoc! = machine-xyz
) 
echo %dropLoc%

и

@echo Off
set dropLoc=machine-abc
IF %computername% == "xyz" (
 set dropLoc = machine-xyz
) 
echo %dropLoc%

Как мне сделать эту работу?

1 Ответ

22 голосов
/ 18 октября 2011

С первого раза вы правильно поняли синтаксис SET, почему вы решили написать что-то еще во второй раз?Кроме того, вы должны добавить кавычки с обеих сторон сравнения.В отличие от других интерпретаторов сценариев, кавычки не являются специальными для пакетного интерпретатора.

@echo off

rem Change this for testing, remove for production
set computername=xyz

set dropLoc=machine-abc

if "%computername%" == "xyz" (
  set dropLoc=machine-xyz
)

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