Быстро создать большой файл в системе Windows

В том же духе, что и для быстрого создания большого файла в системе Linux, я бы хотел быстро создать большой файл в системе Windows. По большому счету я думаю 5 ГБ. Содержание не имеет значения. Встроенная команда или короткий командный файл предпочтительнее, но я приму заявку, если нет других простых способов.

Ответ 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 без записи данных.

Помните, что здесь нет серебряной пули - если "создание" возвращается мгновенно, это означает, что у вас есть разреженный файл, который просто подделывает большой файл, но вы не получите блоки данных/цепочки, пока не напишите в него. Если вы просто прочитаете, вы получите очень быстрые нули, которые могут заставить вас поверить, что ваш диск внезапно стал невероятно быстрым :-)

Ответ 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.

Это создаст файл относительно размера процесса в памяти во вашей временной папке.

Вы можете легко создать файл размером в гигабайты.

Enter image description here

Enter image description here

Ответ 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 ГБ.

Ответ 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/

Создает фиктивные файлы произвольного размера, которые либо заполнены пробелами, либо заполнены несжимаемым содержимым (на ваш выбор). Вот скриншот:

enter image description here

Ответ 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.