四时宝库

程序员的知识宝库

powershell窗口下的一个批量压缩文件的命令

测试环境:windows10、winserver2019.

场景:在一个目录下有很多文件,需要把这些文件逐一压缩,压缩后的文件直接放在该目录下即可。

在该目录下打开PowerShell 窗口,然后把这个代码复制-粘贴到 PowerShell 窗口,然后回车运行即可。

代码如下:

# 获取当前目录下所有文件(不含子目录)
Get-ChildItem -File | ForEach-Object {
    $src = $_.FullName          # 源文件完整路径
    $dst = "$src.gz"            # 目标文件完整路径(原文件名+.gz)

    # 利用内置的 System.IO.Compression.GZipStream 进行压缩
    try {
        # 打开源文件流
        $inStream  = [System.IO.File]::OpenRead($src)
        # 创建目标文件流
        $outStream = [System.IO.File]::Create($dst)
        # 创建 GZip 压缩流
        $gzipStream = New-Object System.IO.Compression.GZipStream($outStream, [System.IO.Compression.CompressionMode]::Compress)

        # 复制数据
        $inStream.CopyTo($gzipStream)

        Write-Host "已压缩:$($_.Name) -> $($_.Name).gz"
    }
    finally {
        # 确保所有流都被关闭
        if ($gzipStream) { $gzipStream.Dispose() }
        if ($outStream)  { $outStream.Dispose()  }
        if ($inStream)   { $inStream.Dispose()   }
    }
}

效果见下图:

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接