В том же духе, что и для быстрого создания большого файла в системе Linux, я бы хотел быстро создать большой файл в системе Windows. По большому счету я думаю 5 ГБ. Содержание не имеет значения. Встроенная команда или короткий командный файл предпочтительнее, но я приму заявку, если нет других простых способов.
Быстро создать большой файл в системе Windows
Ответ 1
fsutil file createnew <filename> <length>
где <length>
находится в байтах.
fsutil
требует административных привилегий.
Ответ 2
Вы можете использовать инструмент Sysinternals Contig. Он имеет переключатель -n
который создает новый файл заданного размера. В отличие от fsutil
, он не требует административных привилегий.
Ответ 3
Я искал способ создания больших файлов с данными, а не только разреженных файлов. Наткнулся на приведенную ниже технику:
Если вы хотите создать файл с реальными данными, вы можете использовать приведенный ниже скрипт командной строки.
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 МБ dummy.txt в течение нескольких секунд...
Ответ 4
Проверьте RDFC http://www.bertel.de/software/rdfc/index-en.html
RDFC, вероятно, не самый быстрый, но он выделяет блоки данных. Абсолютно быстрым будет использование низкоуровневого API, чтобы просто получить цепочки кластеров и поместить их в MFT без записи данных.
Помните, что здесь нет серебряной пули - если "создание" возвращается мгновенно, это означает, что у вас есть разреженный файл, который просто подделывает большой файл, но вы не получите блоки данных/цепочки, пока не напишите в него. Если вы просто прочитаете, вы получите очень быстрые нули, которые могут заставить вас поверить, что ваш диск внезапно стал невероятно быстрым :-)
Ответ 5
Отметьте Инструменты набора ресурсов Windows Server 2003. Существует утилита под названием Creatfil.
CREATFIL.EXE
-? : This message
-FileName -- name of the new file
-FileSize -- size of file in KBytes, default is 1024 KBytes
Это похоже на mkfile в Solaris.
Ответ 6
Мне понадобился обычный 10-гигабайтный файл для тестирования, поэтому я не мог использовать 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 ГБ, но по какой-то причине он появился только как 4 ГБ, поэтому я хотел быть в безопасности и остановился на 4 ГБ. Если вы действительно хотите убедиться, что ваш файл будет обработан надлежащим образом операционной системой и другими приложениями, прекратите расширять его на 1 ГБ.
Ответ 7
Откройте диспетчер задач Windows, найдите самый большой процесс, который у вас запущен, щелкните правой кнопкой мыши и нажмите " Create dump file
.
Это создаст файл относительно размера процесса в памяти во вашей временной папке.
Вы можете легко создать файл размером в гигабайты.
Ответ 8
Использование:
/*
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;
}
Ответ 9
PowerShell с одним вкладышем для создания файла в C:\Temp
для заполнения диска C: осталось всего 10 МБ:
[io.file]::Create("C:\temp\bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace - 10MB).Close
Ответ 10
Если не считать полноценного приложения, мы, ребята из 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
Я нашел отличную утилиту, которую можно настроить по адресу https://github.com/acch/genfiles.
Он заполняет целевой файл случайными данными, поэтому проблем с разреженными файлами не возникает, и для моих целей (тестирование алгоритмов сжатия) он дает хороший уровень белого шума.
Ответ 12
Plain ol 'C... это сборка под MinGW GCC на Windows XX и должна работать на любой "универсальной" платформе Си.
Он генерирует нулевой файл указанного размера. Результирующий файл НЕ является просто записью, занимающей место в каталоге, и фактически занимает указанное количество байтов. Это быстро, потому что никакие фактические записи не происходят, за исключением байта, записанного перед закрытием.
Мой экземпляр создает файл, полный нулей - это может варьироваться в зависимости от платформы; это Программа по существу устанавливает структуру каталогов для любых данных висит вокруг.
#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);
}
Ответ 13
Я недавно искал способ создать большой фиктивный файл с распределением пространства. Все решения выглядят неловко. Наконец, я только что DISKPART
утилиту DISKPART
в Windows (встроенную начиная с Windows Vista):
DISKPART
CREATE VDISK FILE="C:\test.vhd" MAXIMUM=20000 TYPE=FIXED
Где MAXIMUM - размер результирующего файла, здесь 20 ГБ.
Ответ 14
Файлы Temp должны храниться в папке Windows Temp. На основе ответа от Rod вы можете использовать следующий один лайнер для создания временного файла 5 ГБ, который возвращает имя файла
[System.IO.Path]::GetTempFileName() | % { [System.IO.File]::Create($_).SetLength(5gb).Close;$_ } | ? { $_ }
Пояснение:
-
[System.IO.Path]::GetTempFileName()
генерирует случайное имя файла со случайным расширением в папке Windows Temp - The Pipeline используется для передачи имени
[System.IO.File]::Create($_)
, которое создает файл - Имя файла устанавливается на вновь созданный файл с помощью
.SetLength(5gb)
. Я был немного удивлен, обнаружив, что PowerShell поддерживает Byte Conversion, что очень полезно. - Файл-дескриптор должен быть закрыт с помощью
.close
, чтобы другие приложения могли получить к нему доступ. - С
;$_
возвращается имя файла и с| ? { $_ }
гарантируется, что возвращается только имя файла, а не пустая строка, возвращаемая[System.IO.File]::Create($_)
Ответ 15
Я нашел решение, использующее DEBUG в http://www.scribd.com/doc/445750/Create-a-Huge-File, но я не знаю простого способа script его и его похоже, не может создавать файлы размером более 1 ГБ.
Ответ 16
... 1 МБ файла 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/
Ответ 17
Вы можете попробовать этот 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);
}
}
Возможно, потребуется некоторое время для генерации в зависимости от скорости вашего процессора...
Ответ 18
Простой ответ в Python: если вам нужно создать большой реальный текстовый файл, я просто использовал простой цикл while
и смог создать файл размером 5 ГБ примерно за 20 секунд. Я знаю, что это грубо, но это достаточно быстро.
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()
Ответ 19
Самый простой способ, который я нашел, это бесплатная утилита: http://www.mynikko.com/dummy/
Создает фиктивные файлы произвольного размера, которые либо заполнены пробелами, либо заполнены несжимаемым содержимым (на ваш выбор). Вот скриншот:
Ответ 20
Быстро выполнять или быстро набирать клавиатуру? Если вы используете Python в Windows, вы можете попробовать следующее:
cmd /k py -3 -c "with open(r'C:\Users\LRiffel\BigFile.bin', 'wb') as file: file.truncate(5 * 1 << 30)"
Ответ 21
Другое решение с графическим интерфейсом: WinHex.
"File" > "New" > "Desired file size" = [X]
"File" > "Save as" = [Name]
Вопреки некоторым из уже предложенных решений, он фактически записывает (пустые) данные на устройство.
Это также позволяет заполнить новый файл выбранным шаблоном или случайными данными:
"Edit" > "Fill file" (or "Fill block" if a block is selected)
Ответ 22
Вы можете использовать команду cat powershell.
Сначала создайте простой текстовый файл с несколькими символами. Чем больше начальных символов вы вводите, тем быстрее оно становится больше. Пусть это называется out.txt. Тогда в Powershell:
cat out.txt >> out.txt
Подождите столько времени, сколько нужно, чтобы файл был достаточно большим. Затем нажмите Ctrl-C, чтобы закончить.
Ответ 23
Я сделал несколько дополнений к тому же методу 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.