2013-03-05 2 views
0

CMD, похоже, не распознает какую-либо переменную I, хранящуюся с помощью SET. Если я запускаю этот пакетный файл:CMD, похоже, не распознает переменные

@ECHO off 
SET /P name = What is your name? 
ECHO %name% 
PAUSE 
ECHO on 

я получаю следующий результат:

What is your name? steven 
ECHO is off. 
Press any key to continue . . . 

Когда я запускаю линию 2, а затем строка 3 из командной строки, он просто печатает:

%name% 

У меня что-то неправильно настроено? Правильно ли я полагаю, что строка 2 должна создать переменную сеанса, которая должна быть распознана в строке 3?

Я искал, но я мог найти ответы только на расширение переменной внутри блоков IF. Это происходит со мной вне любых блоков IF/FOR/etc.

Это, кстати, Windows 7. Я не уверен, сколько cmd изменяется от одной версии Windows к другой.

ответ

1

Не должно быть пробелов вокруг знака равенства в инструкции set. Изменить этот

SET /P name = What is your name? 

в этом

SET /P name=What is your name? 

и ваша проблема исчезнет.

+0

Ничего себе, я даже не думаю, чтобы проверить это. Я знал, что он чувствителен к пробелу, но я не знал, что это чувствительно. Благодарим за быстрый ответ. Извините за немой вопрос. – sricks3

0

, так как я не могу добавлять комментарии, я должен написать новый ответ. Информация:

«Не должно быть пробелов вокруг знака равенства в инструкции набора».

только частично правильный. Чтобы быть точным, он должен сказать: знак равенства должен следовать непосредственно после имени переменной (в случае sricks3 без пробела). Все, что приходит после того, как знак равенства будет использоваться в качестве ввода-запроса для переменной, включая любые пробелы, поэтому следующий код будет работать, а также:

SET /P name= What is your name? 
Смежные вопросы