Opret hurtigt en stor fil på et Windows-system

Indlæg af Hanne Mølgaard Plasc

Problem



I samme vene som Opret hurtigt en stor fil på et Linux-system ,
Jeg vil gerne hurtigt oprette en stor fil på et Windows-system. Ved stort tænker jeg 5   GB. Indholdet betyder ikke noget. En indbygget kommando eller en kort batchfil ville være at foretrække, men jeg vil acceptere en ansøgning, hvis der ikke findes andre nemme måder.

Bedste reference


fsutil file createnew <filename> <length>


hvor <length> er i byte.


fsutil kræver dog administrative rettigheder.

Andre referencer 1


Du kan bruge værktøjet Sysinternals Contig. Den har en -n switch, der opretter en ny fil med en given størrelse. I modsætning til fsutil kræver det ikke administrative privilegier. [35]

Andre referencer 2


Jeg søgte efter en måde at generere store filer med data, ikke bare sparsom fil. Kom på tværs af nedenstående teknik: [36]



  Hvis du vil oprette en fil med rigtige data, kan du bruge kommandolinjens script nedenfor.


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

  
  (Kør de to ovennævnte kommandoer én efter den anden, eller du kan føje dem til en batchfil.)

  
  Ovennævnte kommandoer opretter en 1 MB fil dummy.txt inden for få sekunder ...


Andre referencer 3


Tjek RDFC http://www.bertel.de/software/rdfc/index-da.html [37]


RDFC er sandsynligvis ikke den hurtigste, men det tildeler datablokke. Den absolut hurtigste skal bruge API på lavere niveau for kun at opnå klyngekæder og sætte dem i MFT uden at skrive data. [38]


Pas på, at der ikke er nogen sølvkugle her - hvis 'oprettelse' vender tilbage, betyder det, at du har en sparsom fil, der bare forfalder en stor fil, men du vil ikke få datablokker/kæder, før du skriver ind i det. Hvis du lige læser, 'får du meget hurtige nuller, som kan få dig til at tro, at dit kørekort pludselig blev flammende hurtigt :-)

Andre referencer 4


Kontroller værktøjerne til Windows Server 2003 Resource Kit. Der er et værktøj kaldet Creatfil. [39]


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


Det ligner mkfile på Solaris.

Andre referencer 5


Jeg havde brug for en regelmæssig 10 GB fil til test, så jeg kunne ikke bruge fsutil, fordi den skaber sparsomme filer (tak @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


Jeg ønskede at oprette en 10 GB fil, men af ​​en eller anden grund viste det sig kun 4 GB, så jeg ønskede at være sikker og stoppet med 4 GB. Hvis du virkelig vil være sikker på, at din fil håndteres korrekt af operativsystemet og andre programmer, skal du stoppe med at udvide den til 1 GB.

Andre referencer 6


Brug:


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

Andre referencer 7


Jeg fandt et glimrende værktøj, der kan konfigureres på https://github.com/SL5R0/GenFile.[40]


Det fylder målfilen med tilfældige data, så der er ingen problemer med sparsomme filer, og for mine formål (testkomprimeringsalgoritmer) giver det et godt niveau af hvid støj.

Andre referencer 8


Åbn Windows Task Manager, find den største proces, du har kørt med højre klik, og klik på Create dump file.


Dette vil oprette en fil i forhold til størrelsen af ​​processen i hukommelsen i din midlertidige mappe.


Du kan nemt oprette en fil, der er dimensioneret i gigabyte.


Indtast billedbeskrivelse her [41]


Indtast billedbeskrivelse her [42]

Andre referencer 9


PowerShell one-liner til at oprette en fil i C:Temp for at udfylde disk C: kun 10   MB:


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

Andre referencer 10


Kort om at skrive en fuld ansøgning, kan vi Python-fyre opnå filer af enhver størrelse med fire linjer, samme uddrag på Windows og Linux (linjen os.stat() er bare en check):


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

Andre referencer 11


Plain ol 'C ... dette bygger under MinGW GCC på Windows XX og skal fungere
på enhver 'generisk' C-platform.


Det genererer en null fil med en bestemt størrelse. Den resulterende fil er IKKE kun en mappe-pladsbesætningsmeddelelse og besidder faktisk det angivne antal bytes. Dette er hurtigt, fordi der ikke findes egentlige skrivninger bortset fra byte skrevet før tæt.


Min forekomst producerer en fil fuld af nuller - dette kan variere efter platform; dette
Programmet opretter i hovedsagen mappestrukturen for uanset data hænger
rundt om.


#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 

");
        exit(1);
    }

    size = atoi(&*argv[1]);

    printf("Creating \%d byte file '\%s'...
", size, &*argv[2]);

    if(!(file = fopen(&*argv[2], "w+")))
    {
        printf("Error opening file \%s!

", &*argv[2]);
        exit(1);
    }

    fseek(file, size-1, SEEK\_SET);
    fprintf(file, "\%c", 0x00);
    fclose(file);
}

Andre referencer 12


Jeg fandt en løsning ved hjælp af DEBUG på http://www.scribd.com/doc/445750/Create-a-Huge-File, men jeg ved ikke en nem måde at scriptere på, og det synes ikke at være i stand til at oprette filer større end 1 GB. [43]

Andre referencer 13


... 1 MB fil dummy.txt inden for få sekunder.


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


Se her: http://www.windows-commandline.com/how-to-create-large-dummy-file/[44]

Andre referencer 14


Temp filer skal gemmes i Windows Temp Folder. Baseret på svaret fra Rod kan du bruge følgende linjer til at oprette en 5 GB temp fil, der returnerer filnavnet


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


Forklaring:



  • [System.IO.Path]::GetTempFileName() genererer et tilfældigt filnavn med tilfældig udvidelse i Windows Temp Folder

  • Rørledningen bruges til at videregive navnet til [System.IO.File]::Create($\_), som opretter filen

  • Filnavnet er indstillet til den nyoprettede fil med .SetLength(5gb). Jeg var lidt overrasket over at opdage, at PowerShell understøtter Byte Conversion, hvilket er meget nyttigt.

  • Filhåndtaget skal lukkes med .close for at tillade andre applikationer at få adgang til det

  • Med ;$\_ er filnavnet returneret og med | ? { $\_ } sikres det, at kun filnavnet returneres og ikke den tomme streng returneret af [System.IO.File]::Create($\_)


Andre referencer 15


Jeg ledte efter en måde at oprette en stor dummyfil med pladsallokering for nylig. Alle løsninger ser akavet ud. Endelig startede jeg netop DISKPART -værktøjet i Windows (indlejret siden Windows Vista): [46]


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


Hvor MAXIMUM er den resulterende filstørrelse, 20 GB her.

Andre referencer 16


Simpelt svar i Python: Hvis du har brug for at oprette en stor ægte tekstfil, brugte jeg bare en simpel while loop og kunne oprette en 5 GB-fil på cirka 20 sekunder. Jeg ved det er rå, men det er hurtigt nok.


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"+"
")
    return

i=0
while i < 1000000:
    write(outfile)
    i += 1
outfile.close()

Andre referencer 17


Du kan prøve denne C ++ kode:


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


Måske tager det lidt tid at generere afhængigt af din CPU-hastighed ...

Andre referencer 18


Hurtig at udføre eller hurtig at skrive på et tastatur? Hvis du bruger Python på Windows, kan du prøve dette:


cmd /k py -3 -c "with open(r'C:UsersLRiffelBigFile.bin', 'wb') as file: file.truncate(5 * 1 << 30)"

Andre referencer 19


Jeg har lavet nogle tilføjelser til den samme fsutil metode som nævnt i det valgte svar.
Dette er at oprette filer med mange forskellige udvidelser og/eller forskellige størrelser.


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


Koden kan klones fra https://github.com/iamakidilam/bulkFileCreater.git[47]