Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Running 7-Zip from within a Powershell script

I'm trying to use 7-Zip to backup some files inside a Powershell (v2) script.

I have:

$zipPath = "C:\Program Files\7-Zip\7z.exe" [Array]$zipArgs = "-mx=9 a", "`"c:\BackupFolder\backup.zip`"", "`"c:\BackupFrom\backMeUp.txt`""  &$zipPath $zipArgs; 

But when I run this I get:

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18   Error: Incorrect command line 

Writing this to the screen I get:

C:\Program Files\7-Zip\7z.exe -mx=9 a "c:\BackupFolder\backup.zip" "c:\BackupFrom\backMeUp.txt" 

So I assumed that I needed to put quotes around the path to 7z.exe, that gave me:

$zipPath = "C:\Program Files\7-Zip\7z.exe" $zipPath = " `"$zipPath`" " [Array]$zipArgs = "-mx=9 a", "`"c:\BackupFolder\backup.zip`"", "`"c:\BackupFrom\backMeUp.txt`""  &$zipPath $zipArgs;      

But then I get the following error:

    The term '"C:\Program Files\7-Zip\7z.exe"' is not recognized as the name of a cmdlet, function, script file , or operable program. Check the spelling of the name, or if a path was included, verify that the path is c orrect and try again. At C:\BackupScript\Backup.ps1:45 char:22 +                     & <<<< `"$zipPath`" $zipArgs;                         + CategoryInfo          : ObjectNotFound: ("C:\Program Files\7-Zip\7z.exe":String) [], CommandNotFound     Exception     + FullyQualifiedErrorId : CommandNotFoundException 

Writing it out gives me:

"C:\Program Files\7-Zip\7z.exe" -mx=9 a "c:\BackupFolder\backup.zip" "c:\BackupFrom\backMeUp.txt" 

Which works as expected when pasting straight into a command window. I have been trying to figure this out for a while, but assume I am missing something (probably quite obvious). Can anybody see what I need to do to make this run?

like image 318
IGGt Avatar asked Aug 13 '14 13:08

IGGt


People also ask

How do I run 7-zip from command line?

To begin a session, open a terminal window. Invoke the version of 7Zip you are using by entering "7z" for P7Zip (7z.exe), or "7za" for 7Zip for Windows (7za.exe) to start either the P7-Zip or 7za application prior to entering commands.

How do I run a 7zip script?

1) Create a Task and add the Source and Destination. 2) In the "Step" menu, choose Process to add a script run. 3) In the Script menu, choose the Unzip/Zip Advanced Script. 4) Configure the parameters as necessary.


2 Answers

Found this script and adapted it to your needs. Can you please try:

$7zipPath = "$env:ProgramFiles\7-Zip\7z.exe"  if (-not (Test-Path -Path $7zipPath -PathType Leaf)) {     throw "7 zip file '$7zipPath' not found" }  Set-Alias 7zip $7zipPath  $Source = "c:\BackupFrom\backMeUp.txt" $Target = "c:\BackupFolder\backup.zip"  7zip a -mx=9 $Target $Source 
like image 81
DarkLite1 Avatar answered Sep 28 '22 02:09

DarkLite1


put "&" special character before 7z command. Example: &7z ...

like image 36
Ric Avatar answered Sep 28 '22 02:09

Ric