如何使用 powershell 创建 n 个 X 大小的文件?

How to create n amount of files of X size using powershell?

所以,我有一个文件夹,我想创建 10 个 150MB 的文件来测试一些东西。 我怎样才能做到这一点?

这是对以下答案的扩展:
How to Generate File of a determinate Size in Windows?
所缺少的只是 for loop 和最大数量的文件。

[IO.directory]::setCurrentDirectory($(get-location).Path) #Changes directory to current PS directory
[Int64]$size = 150MB #This allows you to set the size beforehand
[Int16]$AmountOfFiles = 10
for ($i = 0; $i -lt $AmountOfFiles; $i++) {
    $f = new-object System.IO.FileStream ".\test_$i.dat", Create, ReadWrite
    $f.SetLength($Size)
    $f.Close()
}

为了有趣和清晰起见,让我们逐行逐句:

[IO.directory]::setCurrentDirectory($(get-location).Path) #Changes directory to current PS directory

如前一个答案所述,PS 会话有一个 .Net 使用的“底层”路径,它与“当前目录”(get-locationpwd),因此我们必须“手动”更改它。这是通过代码的 $(Get-Location).Path 部分实现的,它将“底层”路径设置为与 PSSession.
相同的路径

[Int64]$size = 150MB #This allows you to set the size beforehand
[Int16]$AmountOfFiles = 10

Self-explanatory 但基本上我们可以设置我们需要的文件大小和数量。
大小可以是任何大小,1GB、12MB、15KB。 Powershell 将负责转换。

for ($i = 0; $i -lt $AmountOfFiles; $i++) 

循环的标准:

  1. 它在 0 上启动一个名为 i 的变量(也可以在循环的 { } 中使用)。
  2. 它设置允许小于(-lt$AmountOfFiles变量的最大文件数量,所以在这种情况下$i将达到9然后停止循环。
  3. 每次迭代后,它会将$i的值增加一个

最后:

$f = new-object System.IO.FileStream ".\test_$i.dat", Create, ReadWrite
$f.SetLength($Size)
$f.Close()
  • 第一行设置将创建“虚拟”文件的新对象,并将它们放在当前目录并将名称设置为“test_#.dat”,其中#是当前迭代,第一个将是 0,最后一个将是 9 (test_0.dat .. test_9.dat).
  • 第二行设置文件的“长度”,即文件的大小,在本例中为 150MB 或 157286400 字节。
  • 最后一个简单地停止 FileStream 并创建文件。