2015-06-14 106 views
0

超過30天的Zip文件我知道這個問題已被問了好幾次,但我的要求與我在這裏和谷歌上讀到的略有不同。超過30天使用7zip

我有下面的文件夾結構。

c:\weblogs\Servers\Server1 
c:\weblogs\Servers\Server2 

服務器1文件夾可以包含文件夾,如:

W3SVC1 
W3SVC2 
W3SVC3 

服務器2將具有類似的文件夾結構。

我想創建一個腳本,它會查看每個W3SVC*文件夾的.log超過30天的文件。

然後,它會在每個這樣的W3SVC*子文件夾中創建一個名爲Oldlogs-Server*-W3SVC*.zip的zip文件,並將舊日誌移至該文件。在第二次運行時,它會將超過30天的任何新文件移動到相應的zip文件中。

我不是開發者,但是如果沒有可用的現有腳本,任何示例或建議都會有所幫助。

這是我認爲劇本是最接近我想實現:

目前,它拋出一個錯誤:

"\WebApps\LogHarvest\pkzipc.exe needed"

# Alias for pkzip 
if (-not (test-path "$env:F:\WebApps\LogHarvest\pkzipc.exe")) { 
    throw "$env:F:\WebApps\LogHarvest\pkzipc.exe needed" 
} 
set-alias sz "$env:WebApps\LogHarvest\pkzipc.exe" 

############################################ 
#### Variables 

$filePath = "F:\Weblogs\Test" 

$log = Get-ChildItem -Recurse -Path $filePath | Where-Object { $_.Extension -eq ".log" } 

########### END of VARABLES ################## 

foreach ($file in $log) { 
    $name = $file.name 
    $directory = $file.DirectoryName 
    $zipfile = $name.Replace(".log",".7z") 
    sz a -t7z "$directory\$zipfile" "$directory\$name"  
} 

########### END OF SCRIPT ########## 
+0

Kev,我已經添加了腳本,我嘗試了這個問題,我認爲它接近我想要做的。 。 – user1452414

回答

0
if (-not (test-path "$env:F:\WebApps\LogHarvest\pkzipc.exe")) { 
    throw "$env:F:\WebApps\LogHarvest\pkzipc.exe needed" 
} 
set-alias sz "$env:WebApps\LogHarvest\pkzipc.exe" 

你測試路徑$env:F:\WebApps\LogHarvest\pkzipc.exe,其計算結果爲\WebApps\LogHarvest\pkzipc.exe,因爲您可能沒有環境變量$env:F。因爲你的腳本正在尋找當前驅動器上的可執行文件,最有可能的是C:而不是F:。這是導致你觀察到的錯誤的原因。

下一條語句試圖設置別名$env:WebApps\LogHarvest\pkzipc.exe。如果你確實有一個環境變量$env:WebApps你的代碼改成這樣:

$pkzip = "$env:WebApps\LogHarvest\pkzipc.exe" 
if (-not (Test-Path $pkzip)) { 
    throw "$pkzip needed" 
} 
Set-Alias sz $pkzip 

如果你沒有那個環境變量改變你的代碼如下:

$pkzip = "F:\WebApps\LogHarvest\pkzipc.exe" 
if (-not (Test-Path $pkzip)) { 
    throw "$pkzip needed" 
} 
Set-Alias sz $pkzip 

作爲一個邊注:代替創建別名腳本我會使用變量的可執行文件,調用運算符(&):

& $pkzip a -t7z "$directory\$zipfile" "$directory\$name" 

而且,我不知道如果pkzipc實際上可以處理7z檔案。或者如果它首先支持參數a -t7z。那些看起來像7zip程序的參數給我。