含特殊字符密码的WebDAV映射net use批处理脚本无法运行
含特殊字符密码的WebDAV映射net use批处理脚本无法运行
我遇到过完全一样的问题!你的判断完全正确——就是密码里的特殊字符在CMD环境中被当作命令元字符解析了,导致脚本直接语法报错,窗口闪退。手动输入密码时系统会直接读取所有字符,不会解析这些特殊含义,所以能成功;但写在批处理里就会出问题。
给你几个可行的解决方案:
给密码加双引号(最推荐)
CMD中,被双引号包裹的内容会被当作完整字符串处理,大部分特殊字符会失去元字符功能。不过注意:如果密码本身包含双引号,需要用两个双引号""来表示一个双引号(CMD的转义规则)。你的密码里有一个",所以修改后的命令应该是:net use Y: \\www.example.us@SSL\webdav /user:user01 "1A*gX_~)a""];->Ku"这样整个密码会被完整传递给
net use命令,不会被CMD解析成其他指令。添加pause指令查看错误信息
要是窗口还是闪退,看不到具体错误,可以在批处理文件末尾加一行pause,这样执行出错时窗口会停留,显示错误内容,方便你排查:net use Y: \\www.example.us@SSL\webdav /user:user01 "1A*gX_~)a""];->Ku" pause逐个转义特殊字符(备选方案)
如果加引号的方法还是有问题,可以给每个特殊字符前面加^(CMD的转义符),让它们被当作普通字符处理。比如你的密码里的*、)、"、;、>都需要转义,转义后的命令是:net use Y: \\www.example.us@SSL\webdav /user:user01 1A^*gX_~^)a^"]^;->Ku不过这种方法比较繁琐,需要逐个处理特殊字符,不如加引号的方法简洁。
总结一下:核心问题就是CMD会把密码里的特殊字符当作命令的一部分解析,而不是密码的内容,用引号包裹或者转义就能解决这个问题。
备注:内容来源于stack exchange,提问作者user1819753
相关产品推荐
相关产品推荐

