it-swarm.com.ru

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

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

224
Leigh Riffel
fsutil file createnew <filename> <length>

где <length> в байтах.

fsutil требует административных привилегий.

364
Patrick Cuff

Вы можете использовать инструмент Sysinternals Contig . Он имеет переключатель -n, который создает новый файл заданного размера. В отличие от fsutil, он не требует административных привилегий.

34
Joey

Я искал способ создания больших файлов с данными, а не только разреженных файлов. Наткнулся ниже техника :

Если вы хотите создать файл с реальными данными, вы можете использовать приведенный ниже скрипт командной строки.

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 в течение нескольких секунд ...

23
Giri

Проверьте RDFC http://www.bertel.de/software/rdfc/index-en.html

RDFC, вероятно, не самый быстрый, но он выделяет блоки данных. Абсолютно быстрым будет использование API нижнего уровня, чтобы просто получить цепочки кластеров и поместить их в MFT без записи данных.

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

15
ZXX

Проверьте Инструменты набора ресурсов 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.

13
Byron Whitlock

Мне нужен был обычный файл размером 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 ГБ.

11
f.ardelian

Использование:

/*
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;
}
6
lkurts

Откройте диспетчер задач Windows, найдите самый большой процесс, который у вас запущен, щелкните правой кнопкой мыши и нажмите Create dump file.

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

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

 Enter image description here

 Enter image description here

5
shenku

PowerShell с одним вкладышем для создания файла в C:\Temp для заполнения диска C: осталось всего 10 МБ:

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

Я нашел отличную утилиту, которая настраивается на https://github.com/acch/genfiles .

Он заполняет целевой файл случайными данными, поэтому проблем с разреженными файлами не возникает, и для моих целей (тестирование алгоритмов сжатия) он дает хороший уровень белого шума.

4
MusikPolice

Простой C '... это сборка под MinGW GCC на Windows XX и должна работать На любой' общей 'платформе 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);
}
3
Bill W

Недавно я искал способ создать большой фиктивный файл с распределением пространства. Все решения выглядят неловко. Наконец, я только что запустил утилиту DISKPART в Windows (встроенная начиная с Windows Vista):

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

ГдеМАКСИМУМ- размер результирующего файла, здесь 20 ГБ.

3
chersun

Если не считать полноценного приложения, мы, ребята из 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
>>>
3
gimel

Я нашел решение с помощью DEBUG по адресу http://www.scribed.com/doc/445750/Create-a-Huge-File , но я не знаю простой способ написать его, и он не Кажется, можно создавать файлы размером более 1 ГБ.

2
Leigh Riffel

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

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

Объяснение:

  • [System.IO.Path]::GetTempFileName() генерирует случайное имя файла со случайным расширением в папке Temp Windows
  • Конвейер используется для передачи имени в [System.IO.File]::Create($_), которая создает файл
  • Имя файла задается вновь созданному файлу с помощью .SetLength(5gb). Я был немного удивлен, обнаружив, что PowerShell поддерживает преобразование байтов , что действительно полезно.
  • Дескриптор файла должен быть закрыт с помощью .close, чтобы другие приложения могли получить к нему доступ
  • С ;$_ возвращается имя файла, а с | ? { $_ } гарантируется, что возвращается только имя файла, а не пустая строка, возвращаемая [System.IO.File]::Create($_)
2
Florian Feldhaus

... 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/

2
CKuharski

Простой ответ в 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()
1
jkdba

Самый простой способ, который я нашел, - это бесплатная утилита: http://www.mynikko.com/dummy/

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

 enter image description here

1
yosh m

Вы можете попробовать этот код 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);
        }
    }

Возможно, потребуется некоторое время для генерации в зависимости от скорости вашего процессора ...

1
NEt_Bomber

Быстро выполнить или быстро набрать на клавиатуре? Если вы используете Python в Windows, вы можете попробовать это:

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