我想用这个或 powershell 中的 compress-archiev 创建一个 powershell 脚本,以创建一个只包含文件而不包含文件夹的 zip 文件。顶层文件夹包含文件夹,子文件夹中有包含文件的文件夹。我只想压缩顶层文件夹中每个文件夹的文件,而不是文件夹。
我压缩了所有文件夹 C:\some\folder01\manyfolders\files 但我只需要 C:\some\folder01\files 和 C:\some\folder02\files
Add-Type -AssemblyName System.IO.Compression.FileSystem
$directory = "C:\some\folder\manyfolders\"
$folders = Get-ChildItem $directory -Recurse | Where-Object {$_.PSIsContainer} | Select-Object -ExpandProperty FullName
foreach ($folder in $folders) {
$archive = Get-ChildItem $folder -Recurse -File
[System.IO.Compression.ZipFile]::CreateFromDirectory($folder, $archive, 'Optimal', $True)
}
答案1
该脚本非常简单:
Get-ChildItem $directory -Directory |Foreach-Object {
Compress-Archive -Path ($_|Get-ChildItem -Recurse -File).FullName -Destination ($_.name + ".zip")
}
- 获取给定目录中的所有目录(不包括子目录)
- 对于每个目录创建一个 zip 档案,其中包含目录名称以及该目录内所有文件的列表(递归)