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



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

849   20  

20 ответов:

fsutil file createnew <filename> <length>

здесь <length> в байт.

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

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

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

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

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

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

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

Регистрация 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

это похоже на mkfile на Solaris.

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

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

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

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

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

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

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

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

Enter image description here

Enter image description here

PowerShell one-liner для создания файла в C:\Temp заполнить диск C:, оставив только 10 МБ:

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

за исключением написания полного приложения, ребята из США 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
>>>

обычный 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);
}

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

... 1 MB файл пустышка.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/

временные файлы должны храниться в папке Windows Temp. На основе ответ от штанги вы можете использовать следующий лайнер для создания 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($_)

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

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

здесь максимум - это результирующий размер файла, 20 ГБ здесь.

простой ответ на 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()

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

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

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

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

код можно клонировать из https://github.com/iamakidilam/bulkFileCreater.git

Comments

    Ничего не найдено.