我们有一个脚本可以成功地将文件夹压缩到7z,然后在压缩文件夹后删除它。 我们想要做的是将压缩的7z文件移动到另一个位置,该位置更便宜的存储以及备份/异地存档目的。
我已经尝试了以下但是我收到错误“路径不受支持。”
有人能够提供帮助吗?
Get-ChildItem 'E:\AbleyTest\TestFolder\_Archived\*' | Where-Object {
$_.PSIsContainer
} | Select-Object -Expand FullName | ForEach-Object {
& 7z.exe a -mx=9 -t7z "$_.7z" "$_"
if ($LastExitCode -eq 0) {
$folder = (Get-Item $_).Parent.Parent.Name
if (Test-Path "e:\archived\$folder") {
Move-Item -Path "$_.7z" -Destination "e:\archived\$folder\$_.7z"
} else {
New-Item "e:\archived\$folder" -Type directory
Move-Item -Path "$_.7z" -Destination "e:\archived\$folder\$_.7z"
}
Remove-Item -Path $_ -Force -Recurse
} else {
Add-Content "e:\scripts\archivelog $(get-date -f dd-MM-yyyy).txt" "$_ ran into error $LastExitCode while archiving"
}
}
答案 0 :(得分:3)
您的目的地路径无效。请注意$_
是某个文件夹的完整路径(例如E:\AbleyTest\TestFolder\_Archived\SomeFolder
,您的目标路径为:
"e:\archived\$folder\$_.7z"
突然变成:
e:\archived\TestFolder\E:\AbleyTest\TestFolder\_Archived\SomeFolder.7z
编辑:我刚刚意识到我告诉了你这个问题,但并没有真正帮助你解决问题。目标路径不需要文件名(它保留了在目的地使用的文件名),因此只需在$folder
之后停止,您应该没问题:
Move-Item -Path "$_.7z" -Destination "e:\archived\$folder"