与在Linux系统上快速创建大文件相同, 我想在Windows系统上快速创建一个大文件。大的我想是5gb。内容并不重要。内置命令或短批处理文件将是更可取的,但如果没有其他简单的方法,我将接受应用程序。


当前回答

我在https://github.com/acch/genfiles上找到了一个可配置的优秀实用程序。

它用随机数据填充目标文件,因此使用稀疏文件没有问题,而且对于我的目的(测试压缩算法)来说,它提供了不错的白噪声水平。

其他回答

我一直在寻找一种方法来生成包含数据的大文件,而不仅仅是稀疏文件。遇到下面的技巧:

如果您想要创建一个包含真实数据的文件,那么您可以使用下面的命令行脚本。 这只是一个示例行追加创建一个大文件.." > dummy.txt /L %i in (1,1,14) do type dummy.txt >> dummy.txt (依次运行以上两个命令,或者可以将它们添加到批处理文件中。) 上面的命令在几秒钟内创建一个1mb的文件dummy.txt…

查看RDFC http://www.bertel.de/software/rdfc/index-en.html

RDFC可能不是最快的,但它确实可以分配数据块。最快的方法必须使用较低级别的API来获取集群链,并将它们放入MFT中,而不写入数据。

注意,这里没有银弹-如果“创建”立即返回,这意味着你得到了一个稀疏文件,它只是一个假的大文件,但你不会得到数据块/链,直到你写入它。如果你只是阅读,你会得到非常快的零,这可能会让你相信你的驱动器突然变得非常快:-)

临时文件应该存储在Windows临时文件夹中。根据Rod的回答,您可以使用下面的一行代码创建一个5 GB的临时文件,该文件返回文件名

[System.IO.Path]::GetTempFileName() | % { [System.IO.File]::Create($_).SetLength(5gb).Close;$_ } | ? { $_ }

解释:

[System.IO.Path]::GetTempFileName() generates a random filename with random extension in the Windows Temp Folder The Pipeline is used to pass the name to [System.IO.File]::Create($_) which creates the file The file name is set to the newly created file with .SetLength(5gb). I was a bit surprised to discover, that PowerShell supports Byte Conversion, which is really helpful. The file handle needs to be closed with .close to allow other applications to access it With ;$_ the filename is returned and with | ? { $_ } it is ensured that only the filename is returned and not the empty string returned by [System.IO.File]::Create($_)

fsutil file createnew <filename> <length>

其中<length>为字节单位。

例如,要创建一个名为'test'的1MB (Windows MB或MiB)文件,可以使用这段代码。

fsutil file createnew test 1048576

但是Fsutil需要管理权限。

我对所选答案中提到的相同fsutil方法做了一些补充。 这是为了创建许多不同扩展名和/或不同大小的文件。

set file_list=avi bmp doc docm docx eps gif jpeg jpg key m4v mov mp4 mpg msg nsf odt pdf png pps ppsx ppt pptx rar rtf tif tiff txt wmv xls xlsb xlsm xlsx xps zip 7z
set file_size= 1
for %%f in (%file_list%) do (
fsutil file createnew valid_%%f.%%f %file_size%
) > xxlogs.txt

代码可以从https://github.com/iamakidilam/bulkFileCreater.git克隆