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.
20 réponses
fsutil file createnew <filename> <length>
où <length>
est en octets.
fsutil
nécessite des privilèges administratifs cependant.
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.
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...
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 : -)
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.
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.
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;
}
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.
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.
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
à 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
>>>
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);
}
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.
... 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 /
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($_)
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
où MAXIMUM est la taille de fichier résultante, 20 Go ici.
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()
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...
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)"
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