删除尾随" 0d 0a"使用PowerShell从文件中获取字节数

时间:2016-12-20 01:47:08

标签: file powershell byte

我正在尝试使用PowerShell加密和解密文件。在这种情况下,我正在使用.docx文件。加密文件后,我将其传递给decrypt函数,解密后,文件在尝试打开时被破坏。

但是,在使用十六进制编辑器比较原始和解密的.docx文件之后,唯一的区别是解密的.docx文件有2个尾随字节" 0d 0a"。

我认为这是PowerShell" Set-Content"命令。 (Out-File命令产生更糟糕的结果。)

但是,我无法仅替换所有回车符和换行符字节,因为我希望保留word文档的换行符和回车符。

有没有办法我只能删除" 0d 0a"的结尾字节。已解密且已编写的.docx文件?

1 个答案:

答案 0 :(得分:2)

如果没有看到你的例子,就不可能知道额外的CRLF来自哪里。我建议检查您的代码以确定它的来源,然后使用替代路由,如System.IO.File类。如果您只是在寻找快速解决方案,您可以读取文件并删除最后四个字节,然后将字节数组输出回相同的文件覆盖它。这是一个乐队,但应该有效。

#read in all contents
$bytes = [system.io.file]::ReadAllBytes("somefile.docx")
#write out all bytes except the last 4
#0 based so the last byte is at position length-1 then an additional 4 bytes
[System.IO.File]::WriteAllBytes("somefile.docx",$bytes[0..($bytes.length-5)])