2013-04-29 3 views
1

У меня очень простой скрипт, который вводит имя пользователя и пароль. Некоторые пароли содержат специальные символы, такие как:!, @, #, $, ^, &, *, (,), _. Проблема заключается в том, когда они вводят один из этих символов, он заполняет символ пробелами с обеих сторон внутри переменной.Batch Script вставляет ненужные пробелы специальный знак

Вот мой код и пример:

echo Enter UserName: 
set/p user= 
echo Enter Password: 
set/p pass= 
echo %pass% 
net use R: \\serverhere /USER:%user% %pass% 

, если я вошел: Test!Password мой пароль, он выведет: Test ! Password на% пропускания% в команде NET USE, которая вызывает проблемы

Как я могу это исправить?

+0

Ваш образец не так! Ввод 'Test! Password' приводит к выходу' Test! Password' или если замедленное расширение включено в 'TestPassword'. Там нет пробелов – jeb

+0

Так что проблема в том, когда я пытаюсь использовать переменную в команде net use – Peter

ответ

2

Я не верю, что есть проблемы с введенными пространствами, но у вас возникают проблемы со специальными символами.

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

setlocal EnableDelayedExpansion 
echo Enter UserName: 
set/p user= 
echo Enter Password: 
set/p pass= 
echo !pass! 
net use R: \\serverhere /USER:!user! !pass! 
+0

Отредактировано: My error – foxidrive

+0

Спасибо огромное, что сработало! Я бы никогда не подумал об этом – Peter