如何将文件移动到文件夹,然后在powershell中压缩文件夹

时间:2016-02-09 15:07:28

标签: powershell powershell-v2.0

我有一个powershell脚本,它根据特定条件列出文件夹中的文件。我需要将所有这些文件移动到一个文件夹然后压缩它。有人可以帮我解决这个问题吗?我是powershell的初学者:(

这是我到目前为止所做的事情:

   #List all the folders in G:\logfiles
   $folders = (Get-ChildItem -Path "G:\logfiles" | Where-Object {$_.Attributes -eq "Directory"} | Select Fullname)

   #looping all folders
   Foreach ($folder in $folders)
   {
          $files = Get-ChildItem -Path G:\logfiles\$folder | Where{$_.LastWriteTime -lt (Get-Date).AddDays(-30)
   }

2 个答案:

答案 0 :(得分:2)

如果您能够使用Powershell 5.0,那么您只需将文件传输到Compress-Archive cmdlet(例如Compress-Archive -DestinationPath 'Archive.zip')即可。

您还可以通过将-recurse参数指定为Get-ChildItem来简化脚本,这样您就不需要单独遍历每个文件夹(假设这是您想要的)

Get-ChildItem -recurse -Path "G:\logfiles" | Where{$_.LastWriteTime -lt (Get-Date).AddDays(-30) | Compress-Archive -DestinationPath 'Archive.zip'

答案 1 :(得分:0)

这是我一直使用的,只要你安装了7zip。我同意上述关于PS 5的陈述。

#  setting variable for 7zip
if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"}
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"


# adding files to zip archive, then removing all the working folders
sz a -tzip $destination $folder

我从this link获得了此信息。希望你明白这一切!