gpt4 book ai didi

PowerShell "get-childitem2"大小超过 ~3.5gb

转载 作者:行者123 更新时间:2023-12-03 13:05:45 24 4
gpt4 key购买 nike

此链接指向 Get-Childitem2,该函数允许遍历 260 个字符的限制。

https://gallery.technet.microsoft.com/scriptcenter/Get-ChildItemV2-to-list-29291aae#content .

这是一个很棒的函数,运行得非常好,但是,它错误报告了超过 ~3.5GB 的文件大小,这就是我运行它的全部原因。我痛苦地承认,我只是不够好找到并修复代码,以便它准确地报告超过 ~3.5GB 的文件大小。

我想它就在这里的某个地方;因为似乎没有“nFileSizeHigh”选项:

                    } Else {
$Object.Length = [int64]("0x{0:x}" -f $findData.nFileSizeLow)
$Object.pstypenames.insert(0,'System.Io.FileInfo')
}

我选择了这个而不是 Robocopy 和 AlphaFS,因为我在使用两者时都遇到了各种问题。文件大小问题的示例:

get-childitem C:\Temp\Huge:(正确大小以字节为单位)

3166720000 - sp1_vl_build_x64_dvd_617403.iso
5653628928 - server_2016_x64_dvd_9327751.iso
4548247552 - it_English_-3_MLF_X19-53588.ISO

get-childitem2 C:\Temp\Huge:

3166720000 - sp1_vl_build_x64_dvd_617403.iso
1358661632 - server_2016_x64_dvd_9327751.iso
253280256 - it_English_-3_MLF_X19-53588.ISO

最佳答案

来自this documentation

The size of the file is equal to (nFileSizeHigh * (MAXDWORD+1)) + nFileSizeLow

脚本顶部(第 92 行)提到了 nFileSizeHigh,但没有尝试将其添加到文件长度中。所以我只能猜测该脚本有问题,并且没有在大于 [DWORD MAX](即 [uint32]::MaxValue,或大约 3.5GB)的文件上进行测试。

如果将顶部的两行更改为 [uint32] 而不是 [int32]:

        [void]$STRUCT_TypeBuilder.DefineField('nFileSizeHigh', [uint32], 'Public')
[void]$STRUCT_TypeBuilder.DefineField('nFileSizeLow', [uint32], 'Public')

并使长度计算更像文档链接:

$Object.Length = ($findData.nFileSizeHigh * ([uint32]::MaxValue+1)) + ([int64]('0x{0:x}' -f $findData.nFileSizeLow))

然后在我的快速测试中它可以正确处理约 7GB 的文件。

为什么要通过字符串格式化转换为 int64,以及应该如何正确完成它,我不知道,这主要是尝试和错误,直到它起作用。

关于PowerShell "get-childitem2"大小超过 ~3.5gb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45832198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com