Question

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?

Était-ce utile?

La solution

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.

Autres conseils

Try this:

& '7za' x -y "$zip_source" "-o$unzip_destination" 

This should work:

& '7za' x -y $zip_source -o${unzip_destination} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top