Команда DOS BAT: Как принять точку с запятой в качестве ввода - PullRequest
0 голосов
/ 05 августа 2011

Я довольно новичок в написании BAT-файлов. Итак, мне нужно создать BAT-файл, в котором он будет принимать имя пользователя и пароль из командной строки и использовать значения для обработки определенных команд SQL в ORACLE. Это легко, я сделал так, что он предложит пользователю ввести имя пользователя ORACLE, пароль и базу данных. Это соответственно значение1, значение2 и значение3.

Проблема в том, что пароль ORACLE содержит точку с запятой. И когда точка с запятой вводится в приглашении CMD, значение неверно. Например. пароль "abc; cde". Так или иначе, значение2 читается только как «abc». Может кто-нибудь помочь? Я пытался ввести двойные кавычки во время подсказки, но это все тот же. Кроме того, я бы предпочел, чтобы пользователь не вводил двойные кавычки во время запроса, так как это может привести к путанице с действительным паролем.

Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Ваш вопрос не совсем точен.

Вы уверены, что при прочтении пароля на самом деле читается ";" часть?

Я не могу сказать по вашему вопросу, если ";" не считывается в «value2» или если оно действительно находится в «value2», но не передается клиенту Oracle должным образом. Без подробностей невозможно дать правильный ответ.

Для записи:

set /P VALUE2=
echo %VALUE2%

Будет читать текст, содержащий ";" и верните его обратно на экран.

0 голосов
/ 28 августа 2011

Вы можете получить доступ к ; только с% *, бот с %1, %2 или %<n>.

Но даже тогда плохая идея - пытаться прочитать пароль из командной строки, который может содержать специальные символы, так как невозможно получить доступ ко всем разрешенным / возможным паролям.

Pwd: a&b|c^w%cd% абсолютно недоступен таким образом.

Я бы также предпочел, чтобы наконечник Тонни использовал set /p внутри пакета для ввода пароля.

...