Bog*_*dan 29
您可以在批处理循环中运行fsutil来创建任何大小的文件.
fsutil file createnew filename.extension 2000
Run Code Online (Sandbox Code Playgroud)
use*_*737 16
您可以使用PowerShell为您的文件生成廉价的随机数据:
[Byte[]] $out = @()
0..2047 | % {$out += Get-Random -Minimum 0 -Maximum 255}
[System.IO.File]::WriteAllBytes("myrandomfiletest", $out)
Run Code Online (Sandbox Code Playgroud)
这使用的算法带有从系统时钟中获取的种子,因此不要将其用于任何严重的加密应用程序.
另外,要小心Get-Random增加输出文件大小时的性能下降.更多关于这方面的信息:
Powershell中的单线程:
$out = new-object byte[] 1048576; (new-object Random).NextBytes($out); [IO.File]::WriteAllBytes('d:\file.bin', $out)
Run Code Online (Sandbox Code Playgroud)
与@ user188737解决方案相比,这是快速的.
由于您没有指定语言,我只需随机选择一种语言.这是一个PowerShell脚本:
$rootDir = 'C:\Temp\TestRandomFiles\'
$baseFile = $rootDir + "base.txt"
$desiredFileSize = 2*1KB
$fileCount = 50000
"start" | Out-File -Filepath $baseFile
While ($(Get-ChildItem -path $baseFile).Length -lt $desiredFileSize)
{
$(Get-ChildItem -path $baseFile).Length | Out-File $baseFile -APPEND
}
for($i=1;$i -lt $fileCount;$i++)
{
Copy-Item $baseFile "File$i.txt"
}
Run Code Online (Sandbox Code Playgroud)
您必须将变量更改为您想要的参数.
我没有根据 user188737 和 mguassa 建议使用 Get-Random 生成文本,而是通过使用 GUID 提高了速度。
Function New-RandomFile {
Param(
$Path = '.',
$FileSize = 1kb,
$FileName = [guid]::NewGuid().Guid + '.txt'
)
(1..($FileSize/128)).foreach({-join ([guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid -Replace "-").SubString(1, 126) }) | set-content "$Path\$FileName"
}
Run Code Online (Sandbox Code Playgroud)
生成 1mb 文件需要 491 毫秒。跑步:
New-RandomFile -FileSize 1mb
Run Code Online (Sandbox Code Playgroud)
更新:
我已经更新了我的函数以使用 ScriptBlock,因此您可以将“NewGuid()”方法替换为您想要的任何方法。
在这种情况下,我创建 1kb 块,因为我知道我永远不会创建更小的文件。这极大地提高了我的函数速度!
Set-Content 在末尾强制换行,这就是为什么每次写入文件时都需要删除 2 个字符。我已将其替换为 [io.file]::WriteAllText() 。
Function New-RandomFile_1kChunks {
Param(
$Path = (Resolve-Path '.').Path,
$FileSize = 1kb,
$FileName = [guid]::NewGuid().Guid + '.txt'
)
$Chunk = { [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid -Replace "-" }
$Chunks = [math]::Ceiling($FileSize/1kb)
[io.file]::WriteAllText("$Path\$FileName","$(-Join (1..($Chunks)).foreach({ $Chunk.Invoke() }))")
Write-Warning "New-RandomFile: $Path\$FileName"
}
Run Code Online (Sandbox Code Playgroud)
如果您不关心所有块都是随机的,您可以简单地 Invoke() 生成 1kb 块一次。这会大大提高速度,但不会使整个文件随机。
Function New-RandomFile_Fast {
Param(
$Path = (Resolve-Path '.').Path,
$FileSize = 1kb,
$FileName = [guid]::NewGuid().Guid + '.txt'
)
$Chunk = { [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid +
[guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid + [guid]::NewGuid().Guid -Replace "-" }
$Chunks = [math]::Ceiling($FileSize/1kb)
$ChunkString = $Chunk.Invoke()
[io.file]::WriteAllText("$Path\$FileName","$(-Join (1..($Chunks)).foreach({ $ChunkString }))")
Write-Warning "New-RandomFile: $Path\$FileName"
}
Run Code Online (Sandbox Code Playgroud)
Measure-Command 所有这些更改以生成 10mb 文件:
执行 New-RandomFile:35.7688241 秒。
执行 New-RandomFile_1kChunks:25.1463777 秒。
执行 New-RandomFile_Fast:1.1626236 秒。
好吧,从技术上讲,你可以写一些东西来为你做到这一点。
我不知道什么具体的..但最简单的方法是创建一个特定大小的文本文件(例如2K)..然后编写一个批处理文件来复制它50000次。