在Windows系统上快速创建大文件

时间:2009-06-11 18:01:40

标签: windows batch-file

Quickly create a large file on a Linux system 一样, 我想在Windows系统上快速创建一个大文件。从大到大我认为5 GB。内容无关紧要。内置命令或短批处理文件会更好,但如果没有其他简单的方法,我会接受一个应用程序。

22 个答案:

答案 0 :(得分:377)

fsutil file createnew <filename> <length>

其中<length>以字节为单位。

fsutil需要管理权限。

答案 1 :(得分:34)

您可以使用Sysinternals Contig工具。它有一个-n开关,用于创建给定大小的新文件。与fsutil不同,它不需要管理权限。

答案 2 :(得分:23)

我一直在寻找一种用数据生成大文件的方法,而不仅仅是稀疏文件。遇到the below technique

  

如果要创建包含实际数据的文件,则可以使用以下命令行脚本。

echo "This is just a sample line appended to create a big file.. " > dummy.txt
for /L %i in (1,1,14) do type dummy.txt >> dummy.txt
     

(依次运行上述两个命令,或者将它们添加到批处理文件中。)

     

以上命令会在几秒钟内创建一个1 MB的文件dummy.txt ...

答案 3 :(得分:15)

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

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

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

答案 4 :(得分:13)

检查Windows Server 2003 Resource Kit Tools。有一个名为Creatfil的实用程序。

 CREATFIL.EXE
 -? : This message
 -FileName -- name of the new file
 -FileSize -- size of file in KBytes, default is 1024 KBytes

它类似于Solaris上的mkfile。

答案 5 :(得分:11)

我需要一个常规的10 GB文件进行测试,因此我无法使用fsutil,因为它会创建稀疏文件(感谢@ZXX)。

@echo off

:: Create file with 2 bytes
echo.>file-big.txt

:: Expand to 1 KB
for /L %%i in (1, 1, 9) do type file-big.txt>>file-big.txt

:: Expand to 1 MB
for /L %%i in (1, 1, 10) do type file-big.txt>>file-big.txt

:: Expand to 1 GB
for /L %%i in (1, 1, 10) do type file-big.txt>>file-big.txt

:: Expand to 4 GB
del file-4gb.txt
for /L %%i in (1, 1, 4) do type file-big.txt>>file-4gb.txt

del file-big.txt

我想创建一个10 GB的文件,但由于某种原因它只显示为4 GB,所以我希望安全并停止在4 GB。如果您确实希望确保操作系统和其他应用程序正确处理您的文件,请停止以1 GB扩展它。

答案 6 :(得分:6)

使用:

/*
Creates an empty file, which can take all of the disk
space. Just specify the desired file size on the
command line.
*/

#include <windows.h>
#include <stdlib.h>

int main (int argc, char* ARGV[])
{
    int size;
    size = atoi(ARGV[1]);
    const char* full = "fulldisk.dsk";
    HANDLE hf = CreateFile(full,
                           GENERIC_WRITE,
                           0,
                           0,
                           CREATE_ALWAYS,
                           0,
                           0);
    SetFilePointer(hf, size, 0, FILE_BEGIN);
    SetEndOfFile(hf);
    CloseHandle(hf);
    return 0;
}

答案 7 :(得分:5)

打开Windows任务管理器,找到右键单击运行的最大进程,然后单击Create dump file

这将创建一个相对于临时文件夹内存中进程大小的文件。

您可以轻松创建一个大小为千兆字节的文件。

Enter image description here

Enter image description here

答案 8 :(得分:5)

PowerShell one-liner在C:\Temp中创建一个文件来填充磁盘C:只留下10 MB:

[io.file]::Create("C:\temp\bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace - 10MB).Close

答案 9 :(得分:4)

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

它使用随机数据填充目标文件,因此稀疏文件没有问题,并且出于我的目的(测试压缩算法),它会产生很好的白噪声。

答案 10 :(得分:3)

如果没有编写完整的应用程序,我们的Python人员可以使用四行实现任意大小的文件,在Windows和Linux上使用相同的代码段(os.stat()行只是一个检查):

>>> f = open('myfile.txt','w')
>>> f.seek(1024-1) # an example, pick any size
>>> f.write('\x00')
>>> f.close()
>>> os.stat('myfile.txt').st_size
1024L
>>>

答案 11 :(得分:3)

普通的OL'C ......这是在Windows XX上的MinGW GCC下构建的,应该可行 在任何'通用'C平台上。

它生成指定大小的空文件。结果文件不仅仅是目录占用空间条目,实际上占用了指定的字节数。这很快,因为除了关闭之前写入的字节外,不会发生实际写入。

我的实例生成一个满零的文件 - 这可能因平台而异;这个 程序本质上为任何挂起的数据设置目录结构 周围。

#include <stdio.h>
#include <stdlib.h>

FILE *file;

int main(int argc, char **argv)
{
    unsigned long  size;

    if(argc!=3)
    {
        printf("Error ... syntax: Fillerfile  size  Fname \n\n");
        exit(1);
    }

    size = atoi(&*argv[1]);

    printf("Creating %d byte file '%s'...\n", size, &*argv[2]);

    if(!(file = fopen(&*argv[2], "w+")))
    {
        printf("Error opening file %s!\n\n", &*argv[2]);
        exit(1);
    }

    fseek(file, size-1, SEEK_SET);
    fprintf(file, "%c", 0x00);
    fclose(file);
}

答案 12 :(得分:3)

我一直在寻找一种方法来创建一个最近有空间分配的大型虚拟文件。所有解决方案看起来都很尴尬。最后,我刚刚启动了Windows中的DISKPART实用程序(自Windows Vista以来已嵌入):

DISKPART
CREATE VDISK FILE="C:\test.vhd" MAXIMUM=20000 TYPE=FIXED

其中 MAXIMUM 是生成的文件大小,此处为20 GB。

答案 13 :(得分:2)

您可以使用cat powershell命令。

首先创建一个包含几个字符的简单文本文件。输入的初始字符越多,则它变得越快。我们称它为out.txt。然后在Powershell中:

cat out.txt >> out.txt

等待,只要有必要使文件足够大即可。然后按ctrl-c结束它。

答案 14 :(得分:2)

临时文件应存储在Windows临时文件夹中。基于the answer from Rod,您可以使用以下一个衬垫创建一个5 GB临时文件,该文件返回文件名

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

说明:

  • [System.IO.Path]::GetTempFileName()在Windows Temp文件夹
  • 中生成随机扩展名的随机文件名
  • 管道用于将名称传递给创建文件的[System.IO.File]::Create($_)
  • 文件名设置为.SetLength(5gb)新创建的文件。我有点惊讶地发现,PowerShell支持Byte Conversion,这非常有帮助。
  • 需要使用.close关闭文件句柄以允许其他应用程序访问它
  • 使用;$_返回文件名,并使用| ? { $_ }确保只返回文件名,而不是[System.IO.File]::Create($_)
  • 返回的空字符串

答案 15 :(得分:2)

我在http://www.scribd.com/doc/445750/Create-a-Huge-File找到了使用DEBUG的解决方案,但我不知道编写脚本的简单方法,它似乎无法创建大于1 GB的文件。

答案 16 :(得分:1)

Python中的简单答案:如果您需要创建一个大的真实文本文件,我只使用了一个简单的while循环,并且能够在大约20秒内创建一个5 GB的文件。我知道这很粗糙,但它足够快。

outfile = open("outfile.log", "a+")

def write(outfile):
    outfile.write("hello world hello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello world"+"\n")
    return

i=0
while i < 1000000:
    write(outfile)
    i += 1
outfile.close()

答案 17 :(得分:1)

您可以尝试这个C ++代码:

    #include<stdlib.h>
    #include<iostream>
    #include<conio.h>
    #include<fstream>
    #using namespace std;

    int main()
    {
        int a;
        ofstream fcout ("big_file.txt");
        for(;;a += 1999999999){
            do{
                fcout << a;
            }
            while(!a);
        }
    }

根据您的CPU速度,可能需要一些时间来生成......

答案 18 :(得分:1)

我找到的最简单的方法是这个免费实用程序:http://www.mynikko.com/dummy/

创建任意大小的虚拟文件,这些文件要么用空格填充,要么用不可压缩的内容填充(您可以选择)。这是屏幕截图:

enter image description here

答案 19 :(得分:0)

快速执行或快速键入键盘?如果您在Windows上使用Python,可以试试这个:

cmd /k py -3 -c "with open(r'C:\Users\LRiffel\BigFile.bin', 'wb') as file: file.truncate(5 * 1 << 30)"

答案 20 :(得分:0)

另一个GUI解决方案:WinHex。

“File” > “New” > “Desired file size” = [X]
“File” > “Save as” = [Name]

与一些已经提出的解决方案相反,它实际上将(空)数据写入设备。

它还允许使用可选模式或随机数据填充新文件:

“Edit” > “Fill file” (or “Fill block” if a block is selected)

答案 21 :(得分:-1)

我对所选答案中提到的同一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

克隆代码