I have a small problem trying to unzip a file using the 7za
command-line utility in Powershell.
I set the $zip_source
variable to the zip file's path and the
$unzip_destination
to the desired output folder.
However the command-line usage of 7za
needs arguments specified like this:
7za x -y <zip_file> -o<output_directory>
So my current call looks like this:
& '7za' x -y "$zip_source" -o$unzip_destination
Due to the fact that there can be no space between -o
and the destination it
seems that PowerShell will not expand the $unzip_destination
variable, whereas $zip_source
is expanded.
Currently the program simply extracts all the files into the root of C:\
in
a folder named $unzip_destination
.
Setting different types of quotes around the variable won't work neither:
-o"$unzip_destination" : still extracts to C:\$unzip_destination
-o'$unzip_destination' : still extracts to C:\$unzip_destination
-o $unzip_destination : Error: Incorrect command line
Is there any way to force an expansion before running the command?
Try this:
& '7za' x -y "$zip_source" "-o$unzip_destination"
try like this:
-o $($unzip_destination)
Editor's note: This solution only works with a space after -o
(in which case just -o $unzip_destination
would do) - if you remove it, the command doesn't work as intended.
This approach is therefore not suitable for appending a variable value directly to an option name, as required by the OP.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With