Быстрое создание большого файла в системе Windows
в том же духе, что и быстро создайте большой файл в системе Linux,
Я хотел бы быстро создать большой файл в системе Windows. По большому счету я думаю 5 ГБ. Содержание не имеет значения. Встроенная команда или короткий пакетный файл были бы предпочтительнее, но я приму приложение, если нет других простых способов.
20 ответов:
fsutil file createnew <filename> <length>здесь
<length>в байт.
fsutilхотя требует административных привилегий.
Я искал способ генерировать большие файлы с данными, а не только разреженный файл. Наткнулся ниже техника:
Если вы хотите создать файл с реальными данными, то вы можете использовать ниже скрипта.
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(указанные выше две команды, одна за другой, или вы можете добавить их в пакетный файл.)
вышеуказанные команды создают фиктивный файл размером 1 МБ.txt, в течение нескольких секунд...
Проверьте RDFC http://www.bertel.de/software/rdfc/index-en.html
RDFC, вероятно, не самый быстрый, но он выделяет блоки данных. Абсолютно быстрый должен был бы использовать API более низкого уровня, чтобы просто получить цепочки кластеров и поместить их в таблицы без записи данных.
остерегайтесь, что здесь нет серебряной пули - если "создание" возвращается мгновенно, это означает, что у вас есть разреженный файл, который просто подделывает большой файл, но вы не получите блоки данных / цепочки, пока вы не запишете в него. Если вы просто читаете, вы получите очень быстрые нули, которые могут заставить вас поверить, что ваш диск внезапно стал невероятно быстрым :-)
Регистрация Windows Server 2003 Resource Kit Tools. Существует утилита под названием Creatfil.
CREATFIL.EXE -? : This message -FileName -- name of the new file -FileSize -- size of file in KBytes, default is 1024 KBytesэто похоже на mkfile на Solaris.
мне нужен был обычный 10 ГБ файл для тестирования, поэтому я не мог использовать
fsutilпотому что он создает разреженные файлы (спасибо @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Я хотел создать файл 10 ГБ, но по какой-то причине он появился только как 4 ГБ, поэтому я хотел быть в безопасности и остановился на 4 ГБ. Если вы действительно хотите быть уверены, что ваш файл будет правильно обработан операционной системой и другими приложениями, прекратите его расширение на 1 ГБ.
использование:
/* 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; }
Я нашел отличную утилиту, которая настраивается на https://github.com/SL5R0/GenFile.
он заполняет целевой файл случайными данными, поэтому нет проблем с разреженными файлами, и для моих целей (тестирование алгоритмов сжатия) он дает хороший уровень белого шума.
PowerShell one-liner для создания файла в
C:\Tempзаполнить диск C:, оставив только 10 МБ:[io.file]::Create("C:\temp\bigblob.txt").SetLength((gwmi Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace - 10MB).Close
за исключением написания полного приложения, ребята из США Python могут создавать файлы любого размера с четырьмя строками, один и тот же фрагмент в Windows и Linux (
os.stat()строка - это просто проверка):>>> 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 >>>
обычный ol ' C... это строит под MinGW GCC на Windows XX и должно работать на любой универсальная платформа с.
Он генерирует нулевой файл заданного размера. Результирующий файл не просто занимает место в каталоге, а фактически занимает указанное количество байтов. Это происходит быстро, потому что фактические записи не происходят, за исключением байта, записанного перед закрытием.
мой экземпляр создает файл полные нули - это может варьироваться в зависимости от платформы; это программа по существу устанавливает вверх по структуре каталогов для любых данных висит вокруг.
#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); }
Я нашел решение с помощью DEBUG at http://www.scribd.com/doc/445750/Create-a-Huge-File, но я не знаю простого способа его написания, и он, похоже, не может создавать файлы размером более 1 ГБ.
... 1 MB файл пустышка.txt, в течение нескольких секунд.
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смотрите здесь : http://www.windows-commandline.com/how-to-create-large-dummy-file/
временные файлы должны храниться в папке Windows Temp. На основе ответ от штанги вы можете использовать следующий лайнер для создания 5 ГБ временного файла, который возвращает имя файла
[System.IO.Path]::GetTempFileName() | % { [System.IO.File]::Create($_).SetLength(5gb).Close;$_ } | ? { $_ }объяснение:
[System.IO.Path]::GetTempFileName()генерирует случайное имя файла со случайным расширением в папке Temp Windows- конвейер используется для передачи имени
[System.IO.File]::Create($_)который создает файл- имя файла имеет значение недавно созданный файл с
.SetLength(5gb). Я был немного удивлен, обнаружив, что PowerShell поддерживает Байт Преобразования, что очень полезно.- дескриптор файла должен быть закрыт с
.closeчтобы другие приложения могли получить к нему доступ- С
;$_имя файла возвращается и с| ? { $_ }гарантируется, что возвращается только имя файла, а не пустая строка, возвращаемая[System.IO.File]::Create($_)
недавно я искал способ создать большой фиктивный файл с выделением пространства. Все решения выглядят неловко. Наконец - то я только начал
DISKPARTутилита в Windows (встроенная с Windows Vista):DISKPART CREATE VDISK FILE="C:\test.vhd" MAXIMUM=20000 TYPE=FIXEDздесь максимум - это результирующий размер файла, 20 ГБ здесь.
простой ответ на Python: если вам нужно создать большой настоящий текстовый файл, я просто использовал простой
whileцикл и смог создать файл 5 ГБ примерно за 20 секунд. Я знаю, что это грубо, но это достаточно быстро.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()
вы можете попробовать этот код на 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); } }возможно, потребуется некоторое время для генерации в зависимости от скорости вашего процессора...
быстро выполнить или быстро ввести на клавиатуре? Если вы используете Python на Windows, вы можете попробовать это:
cmd /k py -3 -c "with open(r'C:\Users\LRiffel\BigFile.bin', 'wb') as file: file.truncate(5 * 1 << 30)"
Я сделал некоторые дополнения к тому же
fsutilметод, как указано в выбранном ответе. Это делается для создания файлов различных расширений и / или различных размеров.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код можно клонировать из https://github.com/iamakidilam/bulkFileCreater.git


Comments