,我有以下腳本到一個文件夾(文件夾中的所有文件)壓縮成一個zip文件:壓縮文件通過PS
set-content $zipFileName ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
$ZipFile = (new-object -com shell.application).NameSpace($zipFileName)
Get-ChildItem $folder | foreach {$zipFile.CopyHere($_.fullname)}
其中$文件夾=「C:\測試「和$ zipFileName =」C:\ data \ test.zip「爲例
它工作正常,如果」C:\ Test「不包含空的子文件夾,它似乎遞歸地壓縮sub中的所有文件-folders。我真的很喜歡簡單的線腳本。例如:
C:\Test
file1.dat
file2.dat
Test-Sub
File21.bat
....
但是,我在一個案例中出現錯誤。我發現如果有任何空文件夾如「C:\ Test \ EmptySub」,
C:\Test
file1.dat
file2.dat
Test-Sub
File21.bat
....
EmptySub
AnotherSub
file31.sp1
...
該腳本會產生一個錯誤。我嘗試了以下腳本:
Get-ChildItem $files -Recurse | foreach { if (!$_.PSIsContainer)
{$zipFile.CopyHere($_.fullname)}}
這不起作用。它只是跳過所有的子文件夾。不確定是否有過濾器或子句可跳過所有空的子文件夾?
更新:根據建議,我試了一下。我的問題沒有解決。這是我的問題的更新。首先,我更新了上面的腳本以顯示如何創建$ zipFile對象。其次我有建議代碼:
Get-ChildItem $files | ? {-not ($_.PSIsContainer -eq $True -and
$_.GetFiles().Count -eq 0) } | % {$zipfile.CopyHere($_.fullname)}
我上面我的WindowsXP更新嘗試,它正常工作與空的子文件夾。但是,相同的代碼在Windows 2003 Server中不起作用。以下是錯誤消息:
[窗口標題] 壓縮(壓縮)文件夾錯誤
[內容] 未找到文件或沒有讀取權限。
[OK]
不知道這種類型的PK對象在Windows 2003服務器的工作原理,或者如果該對象的其他設置。
它部分工作。在我的Q – 2011-04-13 21:30:33