2013-04-29 13 views
1

我有一个非常简单的脚本输入用户名和密码。某些密码包含特殊字符,如:!,@,#,$,^,&,*,(,),_。问题是,当他们输入这些字符中的一个时,它会在变量内部的任一侧填充空格。批处理脚本插入不需要的空格填充特殊字符

这里是我的代码和一个例子:

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 2013-04-29 14:55:09

+0

所以问题是当我尝试使用网络使用命令中的变量 – Peter 2013-04-29 14:57:18

回答

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

编辑:我的错误 – foxidrive 2013-04-29 15:06:00

+0

非常感谢,工作!我从来没有想过这件事 – Peter 2013-04-29 15:18:04