Créer rapidement un grand fichier sur un système Windows

dans la même veine que créer rapidement un grand fichier sur un système Linux , J'aimerais créer rapidement un gros fichier sur un système Windows. Dans l'ensemble, je pense à 5 Go. Le contenu n'a pas d'importance. Une commande intégrée ou un petit fichier batch serait préférable, mais j'accepterai une application s'il n'y a pas d'autres moyens faciles.

216
demandé sur Peter Mortensen 2009-06-11 22:01:39

20 réponses

fsutil file createnew <filename> <length>

<length> est en octets.

fsutil nécessite des privilèges administratifs cependant.

353
répondu Patrick Cuff 2017-10-20 06:32:32

vous pouvez utiliser le Sysinternals Contig outil. Il a un commutateur -n qui crée un nouveau fichier d'une taille donnée. Contrairement à fsutil , il ne nécessite pas de privilèges administratifs.

34
répondu Joey 2018-01-07 10:42:04

je cherchais un moyen de générer de gros fichiers avec des données, pas seulement des fichiers épars. Est tombé sur la technique ci-dessous :

si vous voulez créer un fichier avec des données réelles, vous pouvez utiliser le script de ligne de commande ci-dessous.

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

(exécutez les deux commandes ci-dessus l'une après l'autre ou vous pouvez les ajouter à un fichier batch.)

les commandes ci-dessus créent un fichier de 1 Mo factice.txt en quelques secondes...

22
répondu Giri 2017-10-20 08:08:49

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

RDFC n'est probablement pas le plus rapide, mais il attribue des blocs de données. Le plus rapide absolument devrait utiliser L'API de niveau inférieur pour obtenir simplement des chaînes de cluster et les mettre dans MFT sans écrire de données.

attention, il n'y a pas de balle d'argent ici - si "creation" retourne instantanément, cela signifie que vous avez un fichier clairsemé qui juste faux un gros fichier, mais vous n'obtiendrez pas des blocs de données/chaînes jusqu'à ce que vous écrivez. Si vous venez de lire est vous obtiendriez des zéros très rapide qui pourrait vous faire croire que votre lecteur tout d'un coup est devenu extrêmement rapide : -)

15
répondu ZXX 2018-09-08 21:06:41

cochez la case Windows Server 2003 Resource Kit Tools . Il existe un utilitaire appelé Creatfil.

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

il est similaire à Mkfile sur Solaris.

13
répondu Byron Whitlock 2013-11-02 18:02:06

j'avais besoin d'un fichier régulier de 10 Go pour les tests, donc je ne pouvais pas utiliser fsutil car il crée des fichiers épars (merci @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

je voulais créer un fichier de 10 Go, mais pour une raison quelconque, il n'est apparu que 4 Go, donc je voulais être sûr et je me suis arrêté à 4 Go. Si vous voulez vraiment être sûr que votre fichier sera manipulé correctement par le système d'exploitation et d'autres applications, arrêtez de l'étendre à 1 Go.

11
répondu f.ardelian 2013-11-02 22:34:34

utiliser:

/*
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
répondu lkurts 2018-09-08 21:00:05

j'ai trouvé un excellent utilitaire qui est configurable à https://github.com/SL5R0/GenFile .

il remplit le fichier cible avec des données aléatoires, de sorte qu'il n'y a pas de problèmes avec les fichiers épars, et pour mes besoins (test des algorithmes de compression) il donne un bon niveau de bruit blanc.

4
répondu MusikPolice 2018-09-08 21:11:45

ouvrir le Gestionnaire des tâches de Windows, trouver le plus grand processus que vous avez le clic droit, et cliquez sur Create dump file .

cela créera un fichier relatif à la taille du processus en mémoire dans votre dossier temporaire.

vous pouvez facilement créer un fichier de taille en gigaoctets.

Enter image description here

Enter image description here

4
répondu shenku 2018-09-08 21:14:05

PowerShell one-liner pour créer un fichier dans C:\Temp pour remplir le disque C: ne laissant que 10 Mo:

[io.file]::Create("C:\temp\bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace - 10MB).Close
4
répondu Rod 2018-09-08 21:14:38

à défaut d'écrire une application complète, nous les gars de Python pouvons réaliser des fichiers de n'importe quelle taille avec quatre lignes, même snippet sur Windows et Linux (la ligne os.stat() est juste un contrôle):

>>> 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
répondu gimel 2018-09-08 20:58:41

Plain ol' C... cela se construit sous MinGW GCC sur Windows XX et devrait fonctionner sur n'importe quelle plate-forme C "Générique".

génère un fichier nul d'une taille spécifiée. Le fichier résultant n'est pas seulement une entrée de l'espace répertoire-occupant, et en fait occupe le nombre spécifié d'octets. C'est rapide car aucune écriture réelle ne se produit sauf pour le octet écrit avant la fermeture.

mon instance produit un fichier plein de zéros - cela peut varier d'une plate-forme à l'autre; ce le programme établit essentiellement la structure de répertoire pour n'importe quelle donnée suspendue autour.

#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
répondu Bill W 2018-09-08 21:11:28

j'ai trouvé une solution en utilisant DEBUG à http://www.scribd.com/doc/445750/Create-a-Huge-File , mais je ne sais pas comment l'écrire facilement et il ne semble pas être capable de créer des fichiers de plus de 1 Go.

2
répondu Leigh Riffel 2009-06-11 18:42:12

... 1 Mo fichier dummy.txt en quelques secondes.

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

voir ici: http://www.windows-commandline.com/how-to-create-large-dummy-file /

2
répondu CKuharski 2015-08-24 22:02:41
Les fichiers

Temp doivent être stockés dans le dossier windows Temp. Basé sur la réponse de Rod vous pouvez utiliser le liner suivant pour créer un fichier temp de 5 Go qui retourne le nom du fichier

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

explication:

  • [System.IO.Path]::GetTempFileName() génère un nom de fichier aléatoire avec une extension aléatoire dans le dossier windows Temp
  • le Pipeline est utilisé pour passer le nom à [System.IO.File]::Create($_) qui crée le fichier
  • le nom du fichier est défini au fichier nouvellement créé avec .SetLength(5gb) . J'ai été un peu surpris de découvrir, que PowerShell supporte Byte Conversion , ce qui est vraiment utile.
  • le gestionnaire de fichier doit être fermé par .close pour permettre à d'autres applications d'y accéder
  • avec ;$_ le nom du fichier est retourné et avec | ? { $_ } il est garanti que seul le nom du fichier est retourné et non la chaîne vide retourné par [System.IO.File]::Create($_)
2
répondu Florian Feldhaus 2017-05-23 11:54:46

je cherchais un moyen de créer un grand fichier fictif avec attribution de l'espace récemment. Toutes les solutions semblent maladroites. Enfin, je viens de lancer L'utilitaire DISKPART dans Windows (intégré depuis Windows Vista):

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

MAXIMUM est la taille de fichier résultante, 20 Go ici.

2
répondu chersun 2018-09-08 21:15:09

réponse Simple en Python: Si vous avez besoin de créer un grand fichier texte réel, je viens d'utiliser une simple boucle while et j'ai pu créer un fichier de 5 Go en environ 20 secondes. Je sais que c'est brut, mais il est assez rapide.

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
répondu jkdba 2018-09-08 21:08:52

vous pouvez essayer ce code 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);
        }
    }

peut-être que cela prendra un certain temps à générer en fonction de votre vitesse CPU...

1
répondu NEt_Bomber 2018-09-08 21:09:47

Rapide à exécuter ou rapide de taper sur un clavier? Si vous utilisez Python sur Windows, vous pouvez essayer ceci:

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

j'ai fait quelques ajouts à la même fsutil méthode comme mentionné dans la réponse choisie. C'est pour créer des fichiers de nombreux types d'extensions et/ou de différentes tailles.

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

le code peut être cloné de https://github.com/iamakidilam/bulkFileCreater.git

-1
répondu Alan Pallath 2018-07-09 14:07:55