我正在尝试从命令行执行一个程序,其中会有参数。在我的密码中有一个符号'£',我无法逃脱。
答案 0 :(得分:1)
最好将一个参数字符串包含在一个非常好的密码中,其中包含除双字母以外的ASCII字母和数字之外的其他字符。
但必须注意在批处理文件中使用不是ASCII table的字符,即字符的代码点值(字节值)大于127十进制。
使用Windows记事本编写批处理文件并使用ANSI编码保存文件时,根据Windows 区域和语言设置,使用代码页保存代码点值大于127的字符。对于北美和西欧国家,这意味着使用代码页Windows-1252。英镑符号在此代码页中具有十进制值163(十六进制:A3)。
但是在命令过程中使用了不同的代码页,可以通过打开命令提示符窗口并运行命令 CHCP (更改代码页)而不使用任何参数来查看。此命令输出命令进程的活动代码页,该页还取决于Windows 区域和语言设置。代码页OEM 437默认情况下在北美国家和西欧国家OEM 850使用。井号在代码页437中具有十进制值156,在代码页850中也是如此。
换句话说,您需要知道比较密码的应用程序对于井号登录密码的期望:
那么要写入批处理文件的内容是什么?
嗯,你必须亲自找到它。
例如,密码是在命令提示符窗口中使用代码页850定义的,因此井号登录存储的密码是单个字节,值为156.批处理文件在记事本中使用代码页1252编辑,因此字符必须在密码中使用œ
才能在密码文件中的密码文件中包含值为156的字节。
答案 1 :(得分:0)
感谢您提供详细的@Mofi答案。
背景:我的CMD程序调用SQLPlus,数据库密码包含“£”。
归纳为一个简短的解决方法,以下步骤对我有用。
修复:
chcp 1252>nul