2016-08-11 122 views
1

我們有一個腳本,它已成功將文件夾壓縮到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" 
    } 
} 

回答

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" 
+0

啊 - 是的,你是對的。非常感謝! –