@ECHO OFF
CLS
SET ad =
SET /p ad = Do you want to [A] Allow or [D] Deny?
ECHO "%ad%"
Я набираю A
и нажимаю Enter
, и получаю вывод:
Do you want to [A] Allow or [D] Deny?
""
Почему это не работает?
Вы не устанавливаете %ad%
. Вы устанавливаете %ad %
.
Некоторые языки более требовательны к пробелам, чем другие. Язык сценариев cmd.exe
является одним из них. Синтаксис для установки переменной set name=value
, и если вы добавите пробелы вокруг =
, они станут частью имени и значения переменной.
Если вы пишете сценарий только для Windows 7/8, я настоятельно рекомендую вместо этого изучить PowerShell. Язык, используемый cmd.exe, ужасен.
Насколько мне известно, командный процессор в Windows 8 не отличается от процессора в Windows 7
Все, вплоть до знака равенства, является частью имени переменной. Так что в этом случае имя вашей переменной на самом деле "ad "
без кавычек. Вы можете просматривать текущие переменные среды с помощью set
команд без каких-либо параметров - это очень полезно для отладки.