2016-05-30 8 views
2
私はたくさんPowerShellを使用したファイルをビュンについて書かれた(と頼ま)されています知っている

内の特定のZipファイルが、すべての私の検索やテストにもかかわらず、私は私が必要なものを思い付くことができませんでした。 PowerShellは - フォルダ

は対象ごととして、私は私は私が見つけることができません必要/したいファイルのリストを取得することができますが、特定の時間帯

$a= Get-ChildItem - path $logFolder | 
Where-Object {$_.CreationDate -gt $startDate -and $_.CreationDate -lt $endDate} 

で作成されたファイルのディレクトリにチェックスクリプトに取り組んでいますzipファイルにそれらを送る方法。

私は

$sourceFolder = "C:\folder1" 
$destinationZip = "c:\zipped.zip" 
[Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem") 
[System.IO.Compression.ZipFile]::CreateFromDirectory($sourceFolder, $destinationZip) 

のような異なるappraochesを試してみた。しかし案の定、それは私が探しているものではないのですフォルダをビュンとき、これはうまく機能している間、私は一時フォルダにファイルを移動することができて、それをジップが、廃棄物のように見え、私はこれを行うためのより良い方法があると確信しています。

私は7zipをなどのようなサードパーティ製のツールを使用して使用することはできませんに注意してください、私は(私の人生がすべてのように楽になる)PowerShellの拡張やPowerShellの5を使用することはできません。

私は答えはかなり簡単でありふれた風景の中にあるが、私の脳は、ループ内にあり、私はあまり理解されるであろう任意の助けを続行する方法を見つけ出すことはできません確信しています。

答えて

3

あなたを濾過し、ファイルのコレクションをループし、それらを1つずつアーカイブに追加することができます。

# creates empty zip file: 
[System.IO.Compression.ZipArchive] $arch = [System.IO.Compression.ZipFile]::Open('D:\TEMP\arch.zip',[System.IO.Compression.ZipArchiveMode]::Update) 
# add your files to archive 
Get-ChildItem - path $logFolder | 
Where-Object {$_.CreationDate -gt $startDate -and $_.CreationDate -lt $endDate} | 
foreach {[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($arch,$_.FullName,$_.Name)} 
# archive will be updated with files after you close it. normally, in C#, you would use "using ZipArchvie arch = new ZipFile" and object would be disposed upon exiting "using" block. here you have to dispose manually: 
$arch.Dispose() 
+0

私が言ったように、私は本当にばかげた何かの周りに私の頭を包んでいた。 は私もわからない、同様のappraochを試してみましたが、私はそれはあなたの古い記事/回答のいずれかからだったと思いますが、働いていませんでした。 私は単にパラメータとして送信元と送信先のフォルダを指定して、私の特定のニーズを満たすために恒星は何も例を変更していないが、これとは別に、それは完全に働いています! 多くの多くのありがとうございます。 – Clariollo

関連する問題