Answers:
fsutil file createnew <filename> <length>
其中<length>
是以字节为单位。
fsutil
但是需要管理权限。
fsutil file createnew
不会创建稀疏文件:c:\>fsutil file createnew test.txt 0x100000
File c:\test.txt is created
c:\>fsutil sparse queryflag test.txt
This file is NOT set as sparse
您可以使用Sysinternals Contig工具。它具有一个-n
开关,可以创建给定大小的新文件。与不同fsutil
,它不需要管理特权。
contig
有效地转到最后一个字节,并在其中写入一个单字节0
(只需与Process Monitor一起查看)。然后,Windows用零填充其余部分。这可能与使用非稀疏文件可以获得的效率差不多,即使在我的硬盘上,创建大小约为5 GiB的文件也只需几秒钟。我想当时我已经尝试过使用SSD或较小的文件。但这是相当快的(绝对比自己写空文件的所有字节还快。)
我正在寻找一种生成带有数据的大文件的方法,而不仅仅是稀疏文件。遇到以下技术:
如果要使用真实数据创建文件,则可以使用以下命令行脚本。
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 ...
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。
查看RDFC http://www.bertel.de/software/rdfc/index-en.html
RDFC可能不是最快的,但是它确实分配了数据块。绝对最快的将不得不使用较低级别的API来获取集群链并将其放入MFT而无需写入数据。
请注意,这里没有灵丹妙药-如果“创建”立即返回,则意味着您有一个稀疏文件,该文件只是伪造一个大文件,但只有写入该文件后,您才能获得数据块/链。如果您只是阅读,您将得到非常快的零,这可能使您相信您的驱动器突然变得非常快:-)
检查Windows Server 2003资源工具包工具。有一个名为Creatfil的实用程序。
CREATFIL.EXE
-? : This message
-FileName -- name of the new file
-FileSize -- size of file in KBytes, default is 1024 KBytes
它与Solaris上的mkfile相似。
我需要一个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的大小扩展文件。
rm
是Unix / Linux命令,同时del
是一个DOS / Windows的命令?
%i
但是在批处理文件中使用双百分号,例如%%i
。
@echo off
,因此显然是个.bat
。这就是为什么它具有双百分号的原因。
file-4gb.txt
在创建之前删除它?那不会导致错误吗?您实际上是要file-4gb.txt
在那条线上进行创作吗?还是重命名旧file-big.txt
文件?即使对于批处理文件,也不清楚。如果要重命名,则您正在寻找的命令可能是ren
。像ren file-big.txt file-4gb.txt
。我认为您将其与混淆rm
。
打开Windows Task Manager,右键单击找到您正在运行的最大进程,然后单击 Create dump file
。
这将在您的临时文件夹的内存中创建一个与进程大小相关的文件。
您可以轻松创建大小为GB的文件。
只需编写一个完整的应用程序,我们的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
>>>
PowerShell一线式创建文件C:\Temp
以填充磁盘C:仅剩余10 MB:
[io.file]::Create("C:\temp\bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace - 10MB).Close
用:
/*
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;
}
int
啊 这将适用于5 GB的文件吗?是否限制为2或4 GB?第三个参数SetFilePointer()
为0表示它不适用于5 GB的文件。
我最近在寻找一种使用空间分配来创建大型虚拟文件的方法。所有的解决方案看起来都很尴尬。最后,我刚刚DISKPART
在Windows(自Windows Vista嵌入)中启动了该实用程序:
DISKPART
CREATE VDISK FILE="C:\test.vhd" MAXIMUM=20000 TYPE=FIXED
其中,最大文件大小为MAXIMUM,此处为20 GB。
我找到了一个可在https://github.com/acch/genfiles进行配置的出色实用程序。
它用随机数据填充目标文件,因此稀疏文件没有问题,并且出于我的目的(测试压缩算法),它提供了不错的白噪声水平。
临时文件应存储在Windows临时文件夹中。根据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支持字节转换,这真的很有帮助。.close
以允许其他应用程序访问它;$_
返回的文件名,并| ? { $_ }
可以确保只返回文件名,而不是空字符串由归国[System.IO.File]::Create($_)
我找到的最简单的方法是这个免费实用程序:http : //www.mynikko.com/dummy/
创建任意大小的虚拟文件,这些文件要么用空格填充,要么用不可压缩的内容填充(您的选择)。这是屏幕截图:
Plain 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);
}
我在http://www.scribd.com/doc/445750/Create-a-Huge-File中找到了使用DEBUG的解决方案,但我不知道编写脚本的简便方法,而且似乎无法创建大于1 GB的文件。
...在几秒钟内1 MB文件dummy.txt。
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
参见此处:http : //www.windows-commandline.com/how-to-create-large-dummy-file/
您可以尝试以下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速度...
用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()
快速执行或快速输入键盘?如果在Windows上使用Python,则可以尝试以下操作:
cmd /k py -3 -c "with open(r'C:\Users\LRiffel\BigFile.bin', 'wb') as file: file.truncate(5 * 1 << 30)"
我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