1. ホーム
  2. powershell

[解決済み] Powershellスクリプトから7-Zipを実行する

2022-02-05 07:11:52

質問

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"

コマンドウィンドウに直接貼り付けると、期待通りに動作します。 私はしばらくこれを理解しようとしていますが、私は何かを見逃していると仮定します(おそらく非常に明白な)。どなたか、これを実行するために必要なことを教えていただけませんか?

どのように解決するのですか?

発見 これ スクリプトを作成し、それをあなたのニーズに合わせてアレンジしました。試していただけませんか。

$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