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"
これは、コマンドウィンドウに直接貼り付けるときに期待どおりに機能します。私はしばらくこれを理解しようとしていましたが、私は何かを見逃していると思います(おそらくかなり明白です)。誰も私がこの実行を行うために必要なものを見ることができますか?
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
7zコマンドの前に「&」特殊文字を置きます。例:&7z ...
たぶんより簡単な解決策は、Powershellでcmd
を介して7-Zipを実行することです。
cmd /c 7za ...
コマンドの前にアンパサンドを付けるだけです
& "C:\Program Files\7-Zip\7z.exe" -mx=9 a "c:\BackupFolder\backup.Zip" "c:\BackupFrom\backMeUp.txt"
パラメーター-fileを使用して、プログラムまたはスクリプトの場所を指定してみてください。
-file "C:\ Program Files\someting.exe"