web-dev-qa-db-ja.com

Powershellスクリプト内から7-Zipを実行する

7-Zipを使用して、Powershell(v2)スクリプト内のいくつかのファイルをバックアップしようとしています。

私が持っています:

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

&$zipPath $zipArgs;

しかし、これを実行すると次のようになります:

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18


Error:
Incorrect command line

私が得る画面にこれを書く:

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

そのため、7z.exeへのパスを引用符で囲む必要があると想定しました。

$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;     

しかし、その後、次のエラーが表示されます。

    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

それを書くことは私に与えます:

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

これは、コマンドウィンドウに直接貼り付けるときに期待どおりに機能します。私はしばらくこれを理解しようとしていましたが、私は何かを見逃していると思います(おそらくかなり明白です)。誰も私がこの実行を行うために必要なものを見ることができますか?

24
IGGt

this スクリプトが見つかり、ニーズに合わせて調整されました。試してみてください:

if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"} 
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"  

$Source = "c:\BackupFrom\backMeUp.txt" 
$Target = "c:\BackupFolder\backup.Zip"

sz a -mx=9 $Target $Source
51
DarkLite1

7zコマンドの前に「&」特殊文字を置きます。例:&7z ...

8
Ric

たぶんより簡単な解決策は、Powershellでcmdを介して7-Zipを実行することです。

cmd /c 7za ...
3
Lars Bilke

コマンドの前にアンパサンドを付けるだけです

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

パラメーター-fileを使用して、プログラムまたはスクリプトの場所を指定してみてください。

-file "C:\ Program Files\someting.exe"

0
trezor