如何使用 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-location
或 pwd
),因此我们必须“手动”更改它。这是通过代码的 $(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++)
循环的标准:
- 它在 0 上启动一个名为
i
的变量(也可以在循环的 { }
中使用)。
- 它设置允许小于(
-lt
)$AmountOfFiles
变量的最大文件数量,所以在这种情况下$i
将达到9然后停止循环。
- 每次迭代后,它会将
$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 并创建文件。
所以,我有一个文件夹,我想创建 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-location
或 pwd
),因此我们必须“手动”更改它。这是通过代码的 $(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++)
循环的标准:
- 它在 0 上启动一个名为
i
的变量(也可以在循环的{ }
中使用)。 - 它设置允许小于(
-lt
)$AmountOfFiles
变量的最大文件数量,所以在这种情况下$i
将达到9然后停止循环。 - 每次迭代后,它会将
$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 并创建文件。