在powershell中,我应该如何单独压缩文件夹中的所有文件?例如,我的文件夹中有 10 个文件,这意味着我想要 10 个 zip。
下面是我的代码,但它只压缩一个文件。
Add-Type -Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.IO.Compression.FileSystem.dll"
function ZipFiles( $zipfilename, $sourcedir )
{
Add-Type -Assembly System.IO.Compression.FileSystem
$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory($sourcedir,
$zipfilename, $compressionLevel, $false)
}
ZipFiles "zippath" "sourcepath"
这是我刚刚使用的一个单行代码,它使用文件名并附加 .zip 扩展名来压缩当前目录中的所有文件
Get-ChildItem "." | ForEach-Object { Compress-Archive -path $_.Name -destinationPath "$($_.Name).zip"}
使用PowerShell进入您要压缩的路径,执行:
$folderlist = Get-ChildItem "."
foreach ($File in $folderlist) { Compress-Archive -path $File.Name -destinationPath "$($File.Name).zip"}
函数调用如下所示:
ZipFiles "C:\Logs.zip" "C:\Logs"
$folderlist = Get-ChildItem -Path C:\ -Directory
Foreach ($Folder in $folderlist)
{ZipFiles "$($Folder.Fullname).zip" "$($Folder.Fullname)"}
我尝试了一行命令 Get-ChildItem "." | ForEach-Object { Compress-Archive -path $.Name -destinationPath "$($.Name).zip"} 它可以工作,但它也保留以前的扩展名,例如,如果文件名是 abc.csv,它现在转换为abc.csv.zip 是否可以获取 abc.zip?
谢谢!