【问题标题】:Write to a file encoded in USC-2 LE BOM, batch script写入以 USC-2 LE BOM 编码的文件,批处理脚本
【发布时间】:2019-09-27 18:52:11
【问题描述】:

我希望能够从 bat 文件创建 *.rdp 文件,但是我刚刚注意到 rdp 文件实际上编码为 USC-2 LE BOM,而我的 bat 正在生成 UTF-8 文件,这就是我所做的:

@echo off
> file.rdp (
echo screen mode id:i:2
... bunch of echoes
echo lastparam:: )

这会产生我预期的结果,但编码为UTF-8,有没有办法:

  • 创建一个文件,设置它的编码,然后追加到它上面?
  • > 编码为USC-2 LE BOM 的输出直接生成到文件中?
  • 在同一个 bat 文件中将 UTF-8 文件编码为 USC-2 LE BOM

我想使用 bat 编写此文件和其他文件,因此我可以为生成的文件设置只读权限,并且想不出任何其他选择。这样,我就可以部署一堆预配置的只读 rdp 文件。

编辑:

感谢 LotPigs answerthis underrated answer 我能够使用 powershell 更改编码,想分享我如何能够在批处理中包含 powershell 编码

@echo off
> utf8file ( ... )
ECHO Get-Content utf8file ^> utf16.rdp > powerShellScript.ps1
powershell.exe -ExecutionPolicy Bypass -File powerShellScript.ps1

【问题讨论】:

  • 能否创建一个仅包含 BOM 的文件,然后将该文件复制到所需的目标文件并使用 >> 附加数据?
  • 考虑 Powershell?
  • @Magoo 不工作,>> 吐出 UTF-8 数据,因此文件以大量乱码结束,主要是中文字符

标签: batch-file unicode encoding


【解决方案1】:

按照 montonero 的建议,使用默认 UTF16LE 编码的 powershell

> Get-Content .\UTF16LEBOM.ps1
@"
screen mode id:i:2
... bunch of echoes
lastparam::
"@ > file.rdp

> hex .\file.rdp

Detected Byte Order Mark (BOM) : UTF16LE

Blk00000: File : .\file.rdp
HexOffs.:_+0_+1_+2_+3__+4_+5_+6_+7__+8_+9_+A_+B__+C_+D_+E_+F__----____----____
00000000: FF FE 73 00  63 00 72 00  65 00 65 00  6E 00 20 00  ..s.c.r.e.e.n. .
00000010: 6D 00 6F 00  64 00 65 00  20 00 69 00  64 00 3A 00  m.o.d.e. .i.d.:.
00000020: 69 00 3A 00  32 00 0D 00  0A 00 2E 00  2E 00 2E 00  i.:.2...........
00000030: 20 00 62 00  75 00 6E 00  63 00 68 00  20 00 6F 00   .b.u.n.c.h. .o.
00000040: 66 00 20 00  65 00 63 00  68 00 6F 00  65 00 73 00  f. .e.c.h.o.e.s.
00000050: 0D 00 0A 00  6C 00 61 00  73 00 74 00  70 00 61 00  ....l.a.s.t.p.a.
00000060: 72 00 61 00  6D 00 3A 00  3A 00 0D 00  0A 00        r.a.m.:.:.....

【讨论】:

  • 太强大了...它确实缺少简单蝙蝠的老式赃物,但我会尝试一下。
  • 嗯,较低的输出实际上是由在 powershell 控制台中执行的旧 vbscript/batch 混合生成的;-)
  • 也许吧,但他们的脚本让我觉得很脏
  • 刚刚编辑过,可以在一批中回到旧学校的赃物......没有你就无法做到,谢谢!
猜你喜欢
  • 2011-05-30
  • 2013-01-22
  • 1970-01-01
  • 2013-08-16
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多