Szybkie tworzenie dużych plików w systemie Windows

W tym samym duchu co Szybko utwórz duży plik w systemie Linux , Chciałbym szybko utworzyć duży plik w systemie Windows. Ogólnie myślę o 5 GB. Treść nie ma znaczenia. Wbudowane polecenie lub krótki plik wsadowy byłoby lepsze, ale zaakceptuję aplikację, jeśli nie ma innych łatwych sposobów.

Author: Peter Mortensen, 2009-06-11

20 answers

fsutil file createnew <filename> <length>

Gdzie {[1] } jest w bajtach.

fsutil wymaga jednak uprawnień administracyjnych.

 353
Author: Patrick Cuff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-20 06:32:32

Możesz użyć narzędzia Sysinternals Contig . Posiada przełącznik -n, który tworzy nowy plik o danym rozmiarze. W przeciwieństwie do fsutil, nie wymaga uprawnień administracyjnych.

 34
Author: Joey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-07 10:42:04

Szukałem sposobu na generowanie dużych plików z danymi, a nie tylko oszczędnych plików. Natknąłem się na poniższą technikę :

Jeśli chcesz utworzyć plik z prawdziwymi danymi, możesz użyć poniższego skryptu wiersza poleceń.

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

(Uruchom dwa powyższe polecenia jeden po drugim lub możesz dodać je do pliku wsadowego.)

Powyższe polecenia tworzą atrapę pliku o rozmiarze 1 MB.txt w ciągu kilku sekund...

 22
Author: Giri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-20 08:08:49

Sprawdź RDFC http://www.bertel.de/software/rdfc/index-en.html

RDFC prawdopodobnie nie jest najszybszy, ale przydziela bloki danych. Absolutnie najszybszy musiałby użyć niższego poziomu API, aby uzyskać łańcuchy klastrów i umieścić je w MFT bez zapisywania danych.

Uważaj, że nie ma tu srebrnej kuli - jeśli "creation" powróci natychmiast, oznacza to, że masz rzadki plik, który po prostu fałszuje duży plik, ale nie dostaniesz bloków/łańcuchów danych, dopóki nie napisz do niego. Jeśli tylko przeczytasz to dostaniesz bardzo szybkie zera, które mogą sprawić, że uwierzysz, że twój dysk nagle stał się niesamowicie szybki: -)

 15
Author: ZXX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 21:06:41

Sprawdź Windows Server 2003 Resource Kit Tools . Istnieje narzędzie o nazwie Creatfil.

 CREATFIL.EXE
 -? : This message
 -FileName -- name of the new file
 -FileSize -- size of file in KBytes, default is 1024 KBytes

Jest podobny do mkfile na Solarisie.

 13
Author: Byron Whitlock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-02 18:02:06

Potrzebowałem zwykłego pliku 10 GB do testowania, więc nie mogłem użyć fsutil, ponieważ tworzy rzadkie pliki (dzięki @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

Chciałem utworzyć plik 10 GB, ale z jakiegoś powodu pojawił się tylko jako 4 GB, więc chciałem być bezpieczny i zatrzymał się na 4 GB. Jeśli naprawdę chcesz mieć pewność, że Twój plik będzie prawidłowo obsługiwany przez system operacyjny i inne aplikacje, przestań go rozszerzać na 1 GB.

 11
Author: f.ardelian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-02 22:34:34

Użycie:

/*
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;
}
 5
Author: lkurts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 21:00:05

Znalazłem doskonałe narzędzie, które można konfigurować w https://github.com/SL5R0/GenFile .

Wypełnia plik docelowy losowymi danymi, więc nie ma problemów z rzadkimi plikami, a dla moich celów (testowanie algorytmów kompresji) daje ładny poziom białego szumu.

 4
Author: MusikPolice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 21:11:45

Otwórz Menedżera zadań systemu Windows, Znajdź największy proces, który uruchomiłeś, kliknij prawym przyciskiem myszy i kliknij Create dump file.

Spowoduje to utworzenie pliku w stosunku do rozmiaru procesu w pamięci w folderze tymczasowym.

Możesz łatwo utworzyć plik o rozmiarze w gigabajtach.

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

 4
Author: shenku,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 21:14:05

PowerShell one-liner do utworzenia pliku w C:\Temp do wypełnienia dysku C: pozostawiając tylko 10 MB:

[io.file]::Create("C:\temp\bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace - 10MB).Close
 4
Author: Rod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 21:14:38

Krótko pisząc pełną aplikację, ludzie z amerykańskiego Pythona mogą uzyskać pliki dowolnego rozmiaru z czterema liniami, sam urywek na Windows i Linuksie (linia os.stat() jest tylko sprawdzeniem):

>>> 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
Author: gimel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 20:58:41

Zwykły ol' C... to buduje się pod MinGW GCC na Windows XX i powinno działać na dowolnej "generycznej" platformie C.

Generuje plik null o określonym rozmiarze. Wynikowy plik nie jest tylko wpisem zajmującym przestrzeń katalogu i w rzeczywistości zajmuje określoną liczbę bajtów. Jest to szybkie, ponieważ nie występują żadne rzeczywiste zapisy poza bajtem zapisanym przed zamknięciem.

Moja instancja tworzy plik pełen zer - może się to różnić w zależności od platformy; to program zasadniczo ustawia struktura katalogów dla dowolnych danych w pobliżu.

#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
Author: Bill W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 21:11:28

Znalazłem rozwiązanie używając debugowania w http://www.scribd.com/doc/445750/Create-a-Huge-File , ale nie znam łatwego sposobu na skryptowanie i nie wydaje się, aby można było tworzyć pliki większe niż 1 GB.

 2
Author: Leigh Riffel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-11 18:42:12

... Plik 1 MB.txt w ciągu kilku sekund.

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

Zobacz tutaj: http://www.windows-commandline.com/how-to-create-large-dummy-file/

 2
Author: CKuharski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-24 22:02:41

Pliki tymczasowe powinny być przechowywane w folderze Windows Temp. Na podstawie odpowiedzi z Rod {[10] } możesz użyć poniższego linera, aby utworzyć plik temp o pojemności 5 GB, który zwraca nazwę pliku

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

Wyjaśnienie:

  • [System.IO.Path]::GetTempFileName() generuje losową nazwę pliku z losowym rozszerzeniem w folderze Windows Temp
  • Nazwa Potoku jest przekazywana do [System.IO.File]::Create($_), który tworzy plik
  • nazwa pliku jest ustawiana na nowo utworzony plik za pomocą .SetLength(5gb). Byłem trochę z zaskoczeniem odkryłem, że PowerShell obsługuje konwersję bajtów , co jest naprawdę pomocne.
  • uchwyt pliku musi być zamknięty za pomocą .close, aby umożliwić innym aplikacjom dostęp do niego
  • z ;$_ zwracana jest nazwa pliku, a z | ? { $_ } jest zapewnione, że zwracana jest tylko nazwa pliku, a nie pusty łańcuch zwracany przez [System.IO.File]::Create($_)
 2
Author: Florian Feldhaus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:46

Ostatnio szukałem sposobu na stworzenie dużego atrapy pliku z alokacją przestrzeni. Wszystkie rozwiązania wyglądają niezręcznie. W końcu uruchomiłem narzędzie DISKPART w systemie Windows (osadzone od Windows Vista):

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

Gdzie MAXIMUM to wynikowy rozmiar pliku, tutaj 20 GB.

 2
Author: chersun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 21:15:09

Prosta odpowiedź w Pythonie: jeśli potrzebujesz utworzyć duży plik tekstowy, użyłem prostej pętli while i byłem w stanie utworzyć plik 5 GB w około 20 sekund. Wiem, że to prymitywne, ale wystarczająco szybkie.

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
Author: jkdba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 21:08:52

Możesz wypróbować ten kod 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);
        }
    }

Może to zajmie trochę czasu, aby wygenerować w zależności od szybkości procesora...

 1
Author: NEt_Bomber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 21:09:47

Szybki do wykonania czy szybki do wpisania na klawiaturze? Jeśli używasz Pythona w systemie Windows, możesz spróbować tego:

cmd /k py -3 -c "with open(r'C:\Users\LRiffel\BigFile.bin', 'wb') as file: file.truncate(5 * 1 << 30)"
 0
Author: Noctis Skytower,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-21 15:05:14

Dodałem kilka dodatków do tej samej metody fsutil, o której mowa w wybranej odpowiedzi. Ma to na celu tworzenie plików o wielu różnych rozszerzeniach i / lub różnej wielkości.

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

Kod można sklonować z https://github.com/iamakidilam/bulkFileCreater.git

 -1
Author: Alan Pallath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-09 14:07:55