it-swarm.com.de

Erstellen Sie schnell große Dateien auf einem Windows-System

Genauso wie Schnell eine große Datei auf einem Linux-System erstellen, Ich möchte schnell eine große Datei auf einem Windows-System erstellen. Im Großen und Ganzen denke ich 5 GB. Der Inhalt spielt keine Rolle. Ein integrierter Befehl oder eine kurze Batchdatei wäre vorzuziehen, aber ich akzeptiere eine Anwendung, wenn es keine anderen einfachen Möglichkeiten gibt.

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

wo <length> in Bytes ist.

fsutil erfordert jedoch Administratorrechte.

364
Patrick Cuff

Sie können das Sysinternals Contig Tool verwenden. Es hat einen -n-Schalter, der eine neue Datei mit einer bestimmten Größe erstellt. Im Gegensatz zu fsutil sind keine Administratorrechte erforderlich.

34
Joey

Ich suchte nach einer Möglichkeit, große Dateien mit Daten zu erzeugen, nicht nur Dateien mit geringer Dichte. Kam quer die unten Technik :

Wenn Sie eine Datei mit realen Daten erstellen möchten, können Sie das folgende Befehlszeilen-Skript verwenden.

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

(Führen Sie die beiden obigen Befehle nacheinander aus, oder fügen Sie sie einer Batchdatei hinzu.)

Die obigen Befehle erstellen innerhalb weniger Sekunden eine 1 MB-Datei dummy.txt ...

23
Giri

Check out RDFC http://www.bertel.de/software/rdfc/index-de.html

RDFC ist wahrscheinlich nicht das schnellste, weist jedoch Datenblöcke zu. Die absolut Schnellsten müssten eine niedrigere API verwenden, um Clusterketten zu erhalten und sie in MFT zu speichern, ohne Daten zu schreiben.

Beachten Sie, dass es hier keine Silbergrube gibt. Wenn "creation" sofort zurückkehrt, bedeutet dies, dass Sie eine spärliche Datei erhalten haben, die nur eine große Datei vorspielt. Sie erhalten jedoch keine Datenblöcke/-ketten, bis Sie in sie schreiben. Wenn Sie nur lesen, erhalten Sie sehr schnelle Nullen, die Sie glauben machen könnten, dass Ihre Fahrt plötzlich extrem schnell wurde :-)

15
ZXX

Überprüfen Sie die Windows Server 2003 Resource Kit-Tools . Es gibt ein Dienstprogramm namens Creatfil.

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

Es ist das mkfile unter Solaris.

13
Byron Whitlock

Ich brauchte eine reguläre 10 GB-Datei zum Testen. Daher konnte ich fsutil nicht verwenden, da dies Dateien mit geringer Dichte erzeugt (danke @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

Ich wollte eine 10 GB-Datei erstellen, aber aus irgendeinem Grund wurden nur 4 GB angezeigt. Daher wollte ich sicher sein und bei 4 GB stehen bleiben. Wenn Sie wirklich sicher gehen möchten, dass Ihre Datei vom Betriebssystem und von anderen Anwendungen ordnungsgemäß verarbeitet wird, sollten Sie die Erweiterung um 1 GB beenden.

11
f.ardelian

Benutzen:

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

Öffnen Sie den Windows Task-Manager, suchen Sie den größten Prozess, den Sie mit der rechten Maustaste ausführen, und klicken Sie auf Create dump file.

Dadurch wird eine Datei erstellt, die sich auf die Größe des Prozesses in Ihrem temporären Ordner bezieht.

Sie können problemlos eine Datei in Gigabyte erstellen.

 Enter image description here

 Enter image description here

5
shenku

PowerShell One-Liner zum Erstellen einer Datei in C:\Temp zum Füllen von Datenträger C: Nur noch 10 MB verfügbar:

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

Ich habe ein ausgezeichnetes Dienstprogramm gefunden, das unter https://github.com/acch/genfiles konfigurierbar ist.

Es füllt die Zieldatei mit zufälligen Daten, so dass es keine Probleme mit spärlichen Dateien gibt, und für meine Zwecke (zum Testen von Kompressionsalgorithmen) ergibt sich ein Nizza-Pegel an weißem Rauschen.

4
MusikPolice

Normales "C" ... baut unter MinGW GCC unter Windows XX auf und sollte auf jeder "generischen" C-Plattform funktionieren.

Es generiert eine Nulldatei mit einer angegebenen Größe. Die sich ergebende Datei ist NICHT nur ein Verzeichnisplatzbesetzer-Eintrag und belegt tatsächlich die angegebene Anzahl von Bytes. Dies ist schnell, da mit Ausnahme des Bytes vor dem Schließen keine tatsächlichen Schreibvorgänge auftreten.

Meine Instanz erzeugt eine Datei mit Nullen - dies kann je nach Plattform variieren. Dieses -Programm legt im Wesentlichen die Verzeichnisstruktur für alle Daten fest, die herumhängen.

#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

Ich habe vor kurzem nach einer Möglichkeit gesucht, eine große Dummy-Datei mit Speicherplatzzuordnung zu erstellen. Alle Lösungen sehen unbeholfen aus. Schließlich habe ich gerade das Dienstprogramm DISKPART in Windows gestartet (seit Windows Vista eingebettet):

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

WobeiMAXIMALdie resultierende Dateigröße ist, hier 20 GB.

3
chersun

Wenn wir keine vollständige Anwendung schreiben, können wir Python-Jungs Dateien jeder Größe mit vier Zeilen und demselben Snippet unter Windows und Linux erreichen (die os.stat()-Zeile ist nur eine Überprüfung):

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

Ich habe unter http://www.scribd.com/doc/445750/Create-a-Huge-File eine Lösung gefunden, die DEBUG verwendet, aber ich kenne keinen einfachen Weg zum Script und es funktioniert nicht scheinen in der Lage zu sein, Dateien größer als 1 GB zu erstellen.

2
Leigh Riffel

Temp-Dateien sollten im Windows-Temp-Ordner gespeichert werden. Basierend auf der Antwort von Rod können Sie den folgenden Liner verwenden, um eine temporäre 5 GB-Datei zu erstellen, die den Dateinamen zurückgibt

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

Erläuterung:

  • [System.IO.Path]::GetTempFileName() generiert einen zufälligen Dateinamen mit einer zufälligen Erweiterung im Windows-Temp-Ordner
  • Die Pipeline wird verwendet, um den Namen an [System.IO.File]::Create($_) zu übergeben, wodurch die Datei erstellt wird
  • Der Dateiname wird mit .SetLength(5gb) auf die neu erstellte Datei gesetzt. Ich war etwas überrascht, als ich feststellte, dass PowerShell Byte Conversion unterstützt, was wirklich hilfreich ist.
  • Das Datei-Handle muss mit .close geschlossen werden, damit andere Anwendungen darauf zugreifen können
  • Mit ;$_ wird der Dateiname zurückgegeben und mit | ? { $_ } wird sichergestellt, dass nur der Dateiname zurückgegeben wird und nicht die leere Zeichenfolge, die von [System.IO.File]::Create($_) zurückgegeben wird.
2

... 1 MB Datei dummy.txt innerhalb weniger Sekunden. 

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

Siehe hier: http://www.windows-commandline.com/how-to-create-large-dummy-file/

2
CKuharski

Einfache Antwort in Python: Wenn Sie eine große echte Textdatei erstellen müssen, habe ich nur eine einfache while-Schleife verwendet und konnte eine 5 GB-Datei in etwa 20 Sekunden erstellen. Ich weiß, dass es grob ist, aber es ist schnell genug.

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

Der einfachste Weg, den ich gefunden habe, ist dieses kostenlose Dienstprogramm: http://www.mynikko.com/dummy/

Erstellt Dummy-Dateien mit beliebiger Größe, die entweder mit Leerzeichen oder mit nicht komprimierbaren Inhalten (Ihrer Wahl) gefüllt werden. Hier ist ein Screenshot:

 enter image description here

1
yosh m

Sie können diesen C++ - Code ausprobieren:

    #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);
        }
    }

Je nach CPU-Geschwindigkeit kann es etwas dauern, bis die Generierung erfolgt ...

1
NEt_Bomber

Eine andere GUI-Lösung: WinHex.

“File” > “New” > “Desired file size” = [X]
“File” > “Save as” = [Name]

Im Gegensatz zu einigen der bereits vorgeschlagenen Lösungen werden die (leeren) Daten tatsächlich auf das Gerät geschrieben.

Sie können die neue Datei auch mit einem auswählbaren Muster oder zufälligen Daten füllen:

“Edit” > “Fill file” (or “Fill block” if a block is selected)
0
GabrielB

Schnelle Ausführung oder schnelles Tippen auf einer Tastatur? Wenn Sie Python unter Windows verwenden, können Sie Folgendes versuchen:

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