ディレクトリ内のすべてのファイルを圧縮しようとしていますが、ディレクトリまたは古いファイル名を使用するように取得できないようです。 Zipファイルで保護されるように、古いファイルを削除する必要があります。
これは私がこれまでに思いついたものです:
$files = Get-ChildItem "D:\Backuptest\input\*" |
ForEach ($filename in $files) {
$content = Get-Content $_.FullName
& "C:\Program Files\WinRAR\Rar.exe" a -m0 -hps8Cs7y7RfLjYgYb -k -df $filename.rar
}
PowerShell Rarは、フォルダー内の複数のファイルをアーカイブ、暗号化、および削除します
したがって、これにより、ファイルを削除する前にファイルの移動先を指示する前よりも少し明確になります(これ以上/System32
など)。
この方法では、 ForEach(method) を使用して、ソースディレクトリ内のファイルごとにファイルオブジェクトファイル名を取得し、1つずつ、非ファイル名と同じファイル名で新しいrar暗号化ファイルを作成します。 -暗号化された[ソース]ファイルを作成し、その末尾に.rarを追加します。 (例:test123.txt
となります test123.txt.rar
暗号化してからtest123.txt
が削除されます。)
あなたの問題はどちらかだったと思います (1.)rar コマンドの構文が正しくない、または (2.)出力場所のrarコマンドに宛先がなく、そのディレクトリから暗黙的に実行され、そこに出力されるだけです。
$Source = Get-ChildItem "D:\Backuptest\input"
$Destination = "D:\Backuptest\input"
$RarApp = "C:\Program Files\WinRAR\Rar.exe"
ForEach ($files in $Source) {
& $RarApp a $($Destination + $files.Name + ".rar") $($files.FullName) -m0 -hps8Cs7y7RfLjYgYb -k -df
}