下面是一个简单的 Powershell 脚本示例:
$dpath = "D:\Fill"
$mask="000000"
$sizefile = 1GB
$numfiles = 10
#file mask will be "file_000000 " = 12 chars total
$fillsize = [int]($sizefile/12)
For ($fnum=0; $fnum -lt $numfiles; $fnum++) {
# mask filename
$fname="$mask$fnum"
$fnamelen=$fname.Length
$fname=$fname.Substring($fnamelen -6)
$fname="FILE_$fname"
Write-Host "Generating file '$fname`.txt' $($fillsize*12) bytes / $numfiles files..."
Write-Output $("$fname "*$fillsize) | Out-File -Encoding ASCII -FilePath "$dpath\$fname`.txt" -Force
}
基本上将重复字符集写入文本文件。这适用于略低于 1GB 的任何内容,但 1GB 会引发错误:“数组维度超出支持范围”。它可以毫无问题地获得最多 1073741784 字节,但无法获得完整的 1073741824 字节。
有什么办法可以解决这个问题吗?
这不是什么大事,因为我不需要它正好是 1GB,但如果有一个简单的修复方法,那就最好实现了。
答案1
这似乎是一个内在的限制。
成立: 除了内存限制之外,字符串不能超过 2^30(1,073,741,824)个字符,因为 Microsoft CLR(公共语言运行时)规定了 2GB 的限制。
我能想到的解决方法是计算您需要的额外字符数,将它们制作成一个 .txt 文件,然后将这个文本文件附加到您正在构建的大文件中?
或者使用另一个函数/循环来构建文件,但抱歉在这方面无法帮助您(Powershell 知识太少)。