我有一个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)
}
答案 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获得了此信息。希望你明白这一切!