- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Windows 上自动为 Oracle 数据库打补丁,我遇到的问题之一是验证服务器上是否有足够的可用空间以便复制和提取补丁。
我需要一种快速获取 zip 存档(Oracle 补丁)的未压缩大小的方法,以确保有足够的空间可供脚本复制和提取补丁。
我从这个线程开始:
7z get total size of uncompress contents?
根据 samson7point1 的回答,这似乎很有希望:
'C:\Program Files\7-Zip\7z.exe' l '.\folder-with-zips\*.zip' | select-string -pattern "1 files" | Foreach {$size=[long]"$(($_ -split '\s+',4)[2])";$total+=$size;"$([math]::Round($total/1024/1024/1024,2))" + " GB"}
但是上面的似乎对我不起作用,可能是我做错了什么。
从那个线程开始,我尝试在 powershell 中开发一些东西,它将对 7z 的“大小”列求和,然后我得到了这个 powershell 脚本:
function getsizeofzip
{
$stopwatch = [System.Diagnostics.Stopwatch]::startNew()
$username = "yayo"
$password = ConvertTo-SecureString "yayo" -AsPlainText -Force
$Credentials = New-Object System.Management.Automation.PSCredential ($username, $password)
$masina = "yayo"
Write-Host Gathering list of zip files to calculate extract size -ForeGroundColor yellow
$alabala = Invoke-Command -ScriptBlock {Invoke-Expression "&'C:\Program Files\7-Zip\7z.exe' l -ba -slt Z:\Oracle\OraDB19c3\*.zip"} -Computer $masina -Credential $Credentials | Select-String "Size = "
Write-Host Saving output to file -ForegroundColor Yellow
$alabala >> vvv.txt
$total = 0
Write-Host Calculating extract size -ForeGroundColor yellow
for ( $index = 0; $index -lt $alabala.count; $index = $index + 2)
{
$temp = $alabala | Select-Object -Index $index
$size = $temp -replace "Size = " -replace ""
#$size
$total += ($size -as [int])
#Write-Host Current total $total
}
$stopWatch.Elapsed.TotalMinutes
$stopWatch.Stop()
Write-Host Totalul este ($total/1024/1024/1024)GB
}
哪些输出:
Gathering list of zip files to calculate extract size
Saving output to file Calculating extract size
21.5341170483333
Totalul este 4.49708485417068 GB
如您所见,执行了以下 7z 命令:
'C:\Program Files\7-Zip\7z.exe' l -ba -slt Z:\Oracle\OraDB19c3\*.zip"
-ba -slt 参数用于排序命令输出,至少去掉 header ,我得到以下输出:
Path = 33808367\files\sqlpatch\33808367
Folder = +
Size = 0
Packed Size = 0
Modified = 2022-05-02 11:51:38
Created =
Accessed =
Attributes = D drwxr-xr-x
Encrypted = -
Comment =
CRC =
Method = Store
Characteristics = UT 0x7875
Host OS = Unix
Version = 10
Volume Index = 0
Offset = 251558554
Path = 33808367\files\sqlpatch\33808367\24758240
Folder = +
Size = 0
Packed Size = 0
Modified = 2022-05-01 13:25:40
Created =
Accessed =
Attributes = D drwxr-xr-x
Encrypted = -
Comment =
CRC =
Method = Store
Characteristics = UT 0x7875
Host OS = Unix
Version = 10
Volume Index = 0
Offset = 251558645
Path = 33808367\files\sqlpatch\33808367\24758240\rollback_files
Folder = +
Size = 0
Packed Size = 0
Modified = 2022-05-01 13:25:40
Created =
Accessed =
Attributes = D drwxr-xr-x
Encrypted = -
Comment =
CRC =
Method = Store
Characteristics = UT 0x7875
Host OS = Unix
Version = 10
Volume Index = 0
Offset = 251558745
Path = 33808367\files\sqlpatch\33808367\24758240\rollback_files\19.1.0.0.0
Folder = +
Size = 0
Packed Size = 0
Modified = 2022-05-01 13:25:40
Created =
Accessed =
Attributes = D drwxr-xr-x
Encrypted = -
Comment =
CRC =
Method = Store
Characteristics = UT 0x7875
Host OS = Unix
Version = 10
Volume Index = 0
Offset = 251558860
Path = 33808367\files\sqlpatch\33808367\24758240\rollback_files\19.1.0.0.0\javavm
Folder = +
Size = 0
Packed Size = 0
Modified = 2022-05-01 13:25:40
Created =
Accessed =
Attributes = D drwxr-xr-x
Encrypted = -
Comment =
CRC =
Method = Store
Characteristics = UT 0x7875
Host OS = Unix
Version = 10
Volume Index = 0
Offset = 251558986
....
...
因为我不知道如何格式化表格(我尝试了一下)以便只选择 Size 列...我将该输出通过管道传输到 Select-String "Size ="现在输出:
Size = 0
Packed Size = 0
Size = 86652
Packed Size = 13750
Size = 0
Packed Size = 0
Size = 0
Packed Size = 0
Size = 0
Packed Size = 0
Size = 92973512
Packed Size = 12818027
Size = 0
Packed Size = 0
Size = 0
Packed Size = 0
Size = 205157781
Packed Size = 58369063
Size = 209589951
Packed Size = 59788028
Size = 0
Packed Size = 0
Size = 0
Packed Size = 0
Size = 0
Packed Size = 0
Size = 205157781
现在我遍历这个 (index+2) 以获取所有值并将它们相加。这行得通,但是......
上面脚本的问题是,对于压缩大小为 1.6g 和 10 万个文件的 Oracle 补丁,它需要……23 分钟……这在某种程度上太多了,因为我不太擅长powershell 或一般优化我正在寻找一些建议。
你能帮我指出正确的方向吗:
-是否有更快的方法来使用 powershell 对 7z 输出进行排序?我尝试将字符串输出格式化为表格以便于解析,但我没有成功,Format-Table(我知道这仅用于输出)或任何类似的 cmdlet 都没有帮助,默认情况下表格不可排序 ...- 是否有另一个适用于 Windows 的 native 实用程序可以显示 zip 文件的未压缩大小?
最佳答案
试试这个,它消除了编写然后解析文本文件的要求,这可能是花费大部分时间的地方。此解决方案将 7zip 命令的输出流式传输到 foreach 对象。在 foreach 循环中,我们查找包含“Size =”的行,然后处理所有匹配项。
#Configure variable to hold our result
$size = 0
#Call 7zip and stream the output to a foreach object
&'C:\Program Files\7-Zip\7z.exe' l -bso0 -slt "C:\Temp\oracle.zip" | %{
#Match the string "Size = anything" in 2 capture groups one of which will contain the filesize
if($_ -match "(^Size\s=\s)(\d+$)"){
#Add the uncompressed filesize to our result variable
$size += $matches[2] -as [int]
}
}
#Show the result in MB
$size / 1MB
关于powershell - 获取未压缩的 zip 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72542845/
我有这个命令: 7z e -oD:\Data\ODS_Source\* D:\Data\DATA_DROP\Source.zip 这导致 D:\Data\ODS_Source\Source\. 我需要
我正在尝试让 Ionic zip 将 zip 文件内的文件夹提取到指定的根目录中。我的问题是里面的zip文件是“zipfile.zip\some_folder\”。我想将“some_folder”中的
我试图让 Ionic zip 将 zip 文件中的文件夹提取到指定的根目录中。我的问题是里面的 zip 文件是“zipfile.zip\some_folder\”。我想将“some_folder”中的
题目 监听服务器端口,得到题目如下: 源码解析 主函数 主函数中是题目界面的逻辑,对应于用户的选择做出相应的操作,其中需要注意的是选项2,解压操作需要获得root权
我有许多需要分发给用户的zip文件,其中约有130个。每个zip文件都包含许多相似的文本,html,xml和jpg文件。压缩文件总计146兆字节;解压缩后,其内容总计551mb。 我想将所有这些文件以
我正在使用 javascript zip.js图书馆。我到处搜索,但找不到将多个文件添加到 zip 的示例。 这是我的代码,但它生成了一个“损坏的”zip。 var len = results.row
在 C# 中,我使用的是 DotNetZip我有一个名为“innerZip.zip”的 zip,其中包含一些数据,和另一个名为“outerZip.zip”的 zip,其中包含 innerZip。我为什
当我使用 library(xlsx) 中的 write.xlsx 时,控制台中会出现以下内容: Note: zip::zip() is deprecated, please use zip::zipr
如果我因为问“非编程”问题而被拒绝,我不会太惊讶,但也许有人知道...... 我正在使用 WinXP 的内置“发送到压缩(zipped)文件夹”功能压缩我的 subversion 沙箱的内容,并惊讶地
我在 Elixir 中有一个二进制字符串,它由压缩字节组成,我想放气并从中提取“真实数据”: iex(93)> data > 我不确定如何解压缩这些数据。到目前为止,我已经: 浏览了 Official
有没有一种方法可以创建一个 zip 文件并强制它在命令行中包含数据描述符部分? 最佳答案 在 Github ( https://github.com/adamhathcock/sharpcompres
我已经有 PBDT.csj and RDK.csj使用此 ( https://www.blackberry.com/SignedKeys/codesigning.html ) 链接进行代码签名处理后的
我研究了几天,发现我们可以将一个包含一些内容的文件添加到 zip 文件中,然后再次压缩它。然后注释将被添加到 zip 文件中,但我不知道该文件到底是什么,所以任何人都知道向 zip(压缩)文件添加注释
我想知道如何找到 zip 文件的压缩级别。 7z 和 winzip 制作的 Zip 文件具有不同的级别评级,因此我想将其中的一些映射到其他工具中的相应级别。 store level 或 level 0
到目前为止,对于Zip文件的Mime类型,我已经看到: 应用程序/八位字节流 multipart / x-zip 应用程序/ zip 应用程序/ zip压缩的 应用程序/ x-zip压缩的 我想我的问
我已经在 google 上搜索、在 wiki 上搜索并阅读了 ZIP 的 RFC,但找不到有关 ZIP 中使用的确切算法的任何信息。 我找到了有关 ZIP == TAR + GZIP 的信息 但是,我
我有这些自解压 zip 文件,我正试图在 2008/7 机器上远程解压这些文件。但它们是以 .exe 的方式出现的,它需要用户双击并选择提取位置。 在 WinZip 支持网站上,他们说要使用/auto
这是我在这里的第一个问题,请耐心等待。 我的目标是在 C# 中创建一个基本的 .zip 存档。我已经尝试使用 .NET 的内置 GZipStream 类并设法实现了这一点,但是我遇到了一个问题,我无法
能否为压缩文件中的压缩文件创建 java.nio.file.FileSystem? 如果是这样,URI 是什么样的? 如果没有,我想我将不得不退回到使用 ZipInputStream。 我正在尝试递归
我想在 here 安装 scala我很关心下载哪一个:zip 还是 tgz。它们之间有什么区别,用例是什么? 最佳答案 它们是不同的archive formats .使用它们是因为它可以节省带宽并且因
我是一名优秀的程序员,十分优秀!