2017-02-22 41 views
-1

У меня есть пакетный файл, который определяет, нажал ли пользователь клавишу A, и если это так, измените переменную char на A вместо . Но по какой-то неизвестной причине это не работает. Я не знаю почему.Почему символ A не присваивается переменной среды с помощью set% Variable% = A в пакетном файле?

Вот код:

@echo off 
set char=. 
:start 
cls 
batbox.exe /k 
if %errorlevel%==97 set %char%=A && goto next 
goto start 
:next 
echo %char% 
pause 

Если вам нужна информация команды batbox, вот link.

+3

Изменение '% установить символ% = A' в' набор "полукокса = А" 'в вашем коде. Вы присвоили 'A' переменной среды с именем' .', используя '% char%', как вы могли видеть при запуске этого командного файла без '@echo off' наверху в окне командной строки, чтобы увидеть действительно выполняемые командные строки. Тогда, пожалуйста, удалите свой вопрос с помощью этой простой ошибки, нажав на ссылку grey __delete__ ниже трех синих тегов. – Mofi

+4

Еще один намек на вопрос о переполнении стека в будущем: подумайте о хорошем заголовке, в котором суммируется то, о чем вы спрашиваете. * У меня есть ошибка с моим кодом, и мне нужна помощь *, безусловно, не суммирует то, что вы хотите знать, соответственно, на какую проблему вам нужна помощь. – Mofi

+0

Пожалуйста, укажите ** конкретный заголовок вопроса **, как рекомендуется здесь: [ask]! Кроме того, опишите, что должен делать сценарий и что он на самом деле делает; * «это не сработает» *, безусловно, не является достаточным описанием ошибки! – aschipfl

ответ

0

Похоже, вы пытаетесь сделать что-то вроде этого:

@Echo off 
Set Char=. 

:Start 
Cls 
Choice /C an /T 10 /D n /N /M "Press a or wait" 
Echo %Char% 
Pause 
Goto :start 

Вы нужно только вставить свой собственный код, чтобы он работал так, как вы хотите. Быстрое отключение отсюда/C - выбор/T - время/D - это то, что он делает, когда время заканчивается/N - это отсутствие показов доступных ответов и/M - сообщение для пользователя.

Источник: Batch Choice Information

+1

После 'choice' вы должны вставить' if% ErrorLevel% EQU 1 set "Char = A" ', и вы должны удалить команду' pause', чтобы добиться того же, что и OP, предпринятый в его вопросе ... – aschipfl