在批处理文件中转义'£'字符

时间:2016-12-03 13:19:12

标签: batch-file command-line

我正在尝试从命令行执行一个程序,其中会有参数。在我的密码中有一个符号'£',我无法逃脱。

2 个答案:

答案 0 :(得分:1)

最好将一个参数字符串包含在一个非常好的密码中,其中包含除双字母以外的ASCII字母和数字之外的其他字符。

但必须注意在批处理文件中使用不是ASCII table的字符,即字符的代码点值(字节值)大于127十进制。

使用Windows记事本编写批处理文件并使用ANSI编码保存文件时,根据Windows 区域和语言设置,使用代码页保存代码点值大于127的字符。对于北美和西欧国家,这意味着使用代码页Windows-1252。英镑符号在此代码页中具有十进制值163(十六进制:A3)。

但是在命令过程中使用了不同的代码页,可以通过打开命令提示符窗口并运行命令 CHCP (更改代码页)而不使用任何参数来查看。此命令输出命令进程的活动代码页,该页还取决于Windows 区域和语言设置。代码页OEM 437默认情况下在北美国家和西欧国家OEM 850使用。井号在代码页437中具有十进制值156,在代码页850中也是如此。

换句话说,您需要知道比较密码的应用程序对于井号登录密码的期望:

  • 使用GUI应用程序定义了值为163的字节作为密码。
  • 在命令提示符窗口中定义了值为156的字节作为密码。
  • 或者,根据代码页和字符编码(ANSI,OEM,UTF-8,UTF-16)使用1个或更多其他字节值作为带有井号的密码。例如,UTF-8字符编码使用2个字节,小数值194和163来编码pound sign

那么要写入批处理文件的内容是什么?

嗯,你必须亲自找到它。

例如,密码是在命令提示符窗口中使用代码页850定义的,因此井号登录存储的密码是单个字节,值为156.批处理文件在记事本中使用代码页1252编辑,因此字符必须在密码中使用œ才能在密码文件中的密码文件中包含值为156的字节。

答案 1 :(得分:0)

感谢您提供详细的@Mofi答案。

背景:我的CMD程序调用SQLPlus,数据库密码包含“£”。

归纳为一个简短的解决方法,以下步骤对我有用。

修复:

  1. 在功能强大的文本编辑器(例如Atom,Notepad ++, 等)
  2. 将(文本编辑器的)文件编码更改为CP-1252
  3. 在脚本顶部添加chcp 1252>nul
  4. 运行脚本并享受结果!