powershell - Compressing to tar.xz using 7-zip through a pipe on windows -


my command line (powershell):

$7z ="`"c:\program files\7-zip\7z.exe`"" &$7z -r -ttar -bd -so . | &$7z -r -txz -bd $archive -si 

the produced archive file indeed contains tar file, tar file corrupt.

note, breaking pipe 2 commands works correctly:

&$7z -r -ttar -bd ${archive}.tmp . &$7z -r -txz -bd $archive ${archive}.tmp 

the produced archive valid.

so, wrong pipeline?

(i using powershell)

try adding | %{ "$_" } in between pipes like

&$7z -r -ttar -bd -so . | %{ "$_" } | &$7z -r -txz -bd $archive -si 

the point second call 7z expects unmodified data on stdin, powershell converting output first call 7z (multiple) (string) objects. % alias foreach-object, additional command loop on each object , convert plain string before passing on second call 7z.

edit: reading through powershell’s object pipeline corrupts piped binary data looks me if suggestion not work, , there's no way fix it. well, other wrapping whole pipeline cmd /c "..." call make cmd , not powershell handle pipeline.

edit2: trying this solution powershell cookbook, slow.

in end, created .cmd script 7z pipes i'm calling powershell script.


Comments

Popular posts from this blog

php - failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request -

java - How to filter a backspace keyboard input -

java - Show Soft Keyboard when EditText Appears -