我希望能够从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
的输出直接输出到文件吗?UTF-8
文件编码到同一蝙蝠文件中的USC-2 LE BOM
吗?我想使用bat来写入此文件和其他文件,因此我可以对生成的文件设置只读权限,并且无法想到其他任何选择。这样,我将能够部署一堆预配置的只读rdp文件。
编辑:
感谢LotPigs answer和this underrated answer,我能够使用powershell更改编码,想分享我如何在批处理中包含powershell编码
@echo off
> utf8file ( ... )
ECHO Get-Content utf8file ^> utf16.rdp > powerShellScript.ps1
powershell.exe -ExecutionPolicy Bypass -File powerShellScript.ps1
答案 0 :(得分: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.:.:.....