Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 删除拖尾“;“0d 0a”;使用PowerShell从文件中删除字节_File_Powershell_Byte - Fatal编程技术网

File 删除拖尾“;“0d 0a”;使用PowerShell从文件中删除字节

File 删除拖尾“;“0d 0a”;使用PowerShell从文件中删除字节,file,powershell,byte,File,Powershell,Byte,我正在尝试使用PowerShell加密和解密文件。在本例中,我使用的是.docx文件。加密文件后,我将其传递给decrypt函数,解密后,文件在尝试打开时损坏 但是,在使用十六进制编辑器比较原始文件和解密的.docx文件后,唯一的区别是解密的.docx文件有两个尾随字节“0d 0a” 我认为这是PowerShell的“设置内容”命令的结果。 (输出文件命令产生的结果要糟糕得多。) 但是,我不能仅仅替换所有回车和换行字节,因为我希望保留word文档的换行和回车 是否有一种方法可以仅删除已解密和已写

我正在尝试使用PowerShell加密和解密文件。在本例中,我使用的是.docx文件。加密文件后,我将其传递给decrypt函数,解密后,文件在尝试打开时损坏

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

我认为这是PowerShell的“设置内容”命令的结果。 (输出文件命令产生的结果要糟糕得多。)

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


是否有一种方法可以仅删除已解密和已写入的.docx文件的“0d 0a”的尾随字节?

如果没有看到您的示例,就无法知道额外的CRLF来自何处。我建议检查您的代码以确定它来自何处,然后使用类似类的备用路径。如果您只是在寻找一个快速的解决方案,您可以读入文件并去掉最后四个字节,然后将字节数组输出回同一个文件,覆盖它。这是绷带,但应该有效

#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)])

Set Content-NoNewline
请回答您的问题并提供答案。@PetSerAl感谢您的回答,我使用的PowerShell v2没有-NoNewline功能,是否有其他方法可以解决我的问题?谢谢!!!这成功了!但是我把-5改成了-3,因为-5删除了2个额外的字节。