2016-02-26 35 views
0

我正在爲我們的支持者編寫一個小型Powershell應用程序來存檔文件。但現在我因爲7zip選項而卡住了。使用Textfile中的文件創建7-Zip存檔 - Powershell

用戶可以選擇一個日期和目錄,代碼會選擇在該日之前修改的所有文件。

現在我想存儲在一個Zip文件所有這些文件,但我不明白這一點:(

$path = Read-Host "please select path : " 

    Set-Alias sz "C:\Program Files\7-Zip\7zG.exe" 


    $bis = Read-Host "please select date (dd.mm.yyyy): " 
    $bisdate = [datetime]::ParseExact($bis,'dd.MM.yyyy',$null) 

    $files = Get-ChildItem $path | Where {$_.LastWriteTime -lt $bisdate} |  ForEach-Object { $_.FullName} > C:\Test\list.txt 

我發現了幾個樣品7zip的操作,但無法找到這種情況的解決方案。是否有任何選項像Bash的?類似的東西?

zip archive [email protected] < out.txt 
+0

順便說一句。對不起,我的英語不好;) –

回答

0

您可以創建歸檔與此代碼ifyou在指定的目錄下有7z.exe7z.dll

foreach ($filePath in [System.IO.File]::ReadAllLines("c:\Test\list.txt")) 
{ 
    $archParams += "`"" + $filePath + "`" " 
} 
$archParams = "a `"C:\Test\list.zip`" " + $archParams 

Start-Process -FilePath "C:\Program Files\7-Zip\7z.exe" -Wait -ArgumentList $archParams 

qoutes的轉義是因爲space -symbol在必要路徑到文件

+0

這會在其中創建一個帶有list.txt的Zip文件。我需要歸檔在list.txt文件中監聽的文件。 –

+0

我更改了代碼以添加到檔案中,所有文件都包含在'list.txt'中 – Indian

+0

This Works!謝謝soso多!! :不幸的是,這只是創建一個Zip一次...如果我想創建另一個它沒有工作。重新啓動後,它再次運行一次..我必須殺死一個進程或什麼? Thx in advance :)編輯:關閉Powershell ISE並重新開放作品 –

0

您可以使用「7za」,這是一個7zip的控制檯應用程序,你使用谷歌找到它。 其放置在一個共同的路徑,這在你的路徑變量中。

下面是一個例子:

7za a -tzip "C:temp\myzip.zip" "C:\temp\Client\*.*" 
+0

這個文件夾存檔所有來自目錄C:\ temp \ Client \的文件。那不是我需要的。我必須在我的文件文件中構建一個只包含文件偵聽器的存檔... –

+0

然後,您將不得不爲每個文件調用一次該命令。 – etalon11

相關問題