Как создать файл любого размера и любого формата?
Как создать файл любого размера в любом формате?
Привет читателям блога Компьютер76, сегодня мы попробуем один трюк, с помощью которого можно потроллить соседей по офису, подшутить над друзьями и просто позабавиться на реакцию пользователя, который вдруг обнаружит, что…
В Windows вдруг появился файл, который занимает громадное пространство и даёт системе нормально функционировать. С помощью этого трюка можно в один момент заполнить всё свободное пространство, например, флешки.
Как это работает?
Если вы не впервые на страницах моего сайта, вы поняли, что в Windows много скрытых инструментов, о которых сама Windows ни одному пользователю предпочитает не рассказывать. Одна из таких бесчисленных встроенных утилит Fsutil.exe. Её основное предназначение – системные операции с файлами из командной строки. Она-то и поможет нам создать файл любого размера с любым понравившимся нам расширением. Да, нас снова понадобится консоль команд (работаем с правами админа). В Windows XP её не ищите – утилита входит в комплект Windows со времён Vista.
ОТСТУПЛЕНИЕ
Такие приколы могут создаваться и программами сторонних разрабов. Мне известны утилиты типа Dummy File Creator или Disk tools toolkit. Также, это умеет делать троян, поглощающий всё свободное пространство диска, маскируясь под антивирус.
Как создать файл любого размера: что умеет сама Windows?
Синтаксис нашей команды в утилите fsutil на создание файла выглядит так:
Отсюда следует, если мы хотим создать текстовый файл в корне системного диска размером 1 Кб (в байтах) и именем TEST, нам придётся в консоли написать командой:
Как вы догадались, можно создать файл любого размера и в любом формате в ЛЮБОМ месте, где бы вы не пожелали. Если файл нужен конкретных размеров, а его размер имеет для вас значение, лучше, конечно, воспользоваться конвертером единиц для перевода байт в кило-, мега– и гигабайты.
Итак, наш файл, конечно, пустой и не несёт никакого в себе содержания. Присвойте ему любое расширение – он же всё равно пуст. Текстовый файл, к примеру, можно заполнить произвольным текстом, в том числе из той же fsutil. Зачем? Дело в том, что, например, текстовый файл огромных размеров, заполненный информацией, при открытии немедленно вызовет как минимум зависание программы, с помощью которой жертва попытается этот документ открыть: Блокнот или ещё что… Но согласитесь, заполнять текстовый документ осмысленным содержанием через командную строку – всё равно что чесать пятку через штанину.
Ну и дополнить издевательство над пользователем можно присвоив документу (или фильму, фотографии, музыкальному треку) атрибут Скрытый. И если у жертвы в Свойствах папки не стоит Отображать скрытые файлы и папки, он потратит много времени на поиски того, куда подевалось пространство на диске. Так, созданный файл можно спрятать прямо сейчас, не закрывая консоли. Допишите вторую команду в виде:
Как создать файл произвольного размера
Иногда бывают ситуации, в которых требуется быстро создать один или несколько файлов произвольного размера. Операционная система Windows предлагает для этого несколько различных вариантов.
Создание файла с помощью fsutil
Быстрее и проще всего создать файл с помощью утилиты командной строки fsutil. Для примера откроем консоль (обязательно с правами администратора) и создадим на диске E файл file.txt размером 1ГБ командой:
fsutil file createnew E:\File.txt 1000000000
Таким образом можно создать файл любого размера, причем файл создается практически мгновенно.
Создание файла с помощью PowerShell
То же самое можно сделать с помощью PowerShell, хотя команды будут немного сложнее:
$file = New-Object -TypeName System.IO.FileStream -ArgumentList E:\File.txt,Create,ReadWrite
$file.SetLength(1000Mb)
$file.Close()
Здесь мы сначала создаем объект типа файл, а затем с помощью метода SetLength присваиваем ему необходимый размер. Таким способом также можно мгновенно создать файл любого размера.
Есть и еще один, альтернативный способ создания файла с помощью PowerShell. Если в первом случае мы создавали файл и задавали его размер, то здесь создаем содержимое нужного размера и помещаем это содержимое в указанный файл. Например:
$content = New-Object -TypeName Byte[] -ArgumentList 10Mb
Set-Content -Path E:\File.txt -Value $content -Encoding Byte
При использовании этого метода создание файла занимает некоторое время, зависящее от размера файла. Кроме того, с его помощью невозможно создать файл большого размера. Максимальный размер файла ограничен встроенным значением [int]::MaxValue и при его превышении будет выдана ошибка ″Array dimentions exceeded supported range″.
Все описанные способы создают пустые файлы (точнее файлы, заполненные символом NUL). Если надо создать файл заданного размера и заполнить его каким либо произвольным содержимым, то можно немного изменить предыдущий способ и воспользоваться такими командами:
$array = New-Object -TypeName Byte[] -ArgumentList 10Mb
$obj = New-Object -TypeName System.Random
$obj.NextBytes($array)
Set-Content -Path E:\File.txt -Value $array -Encoding Byte
Ну и для генерации большого количества файлов (напр. 1000) можно воспользоваться таким скриптом:
$array = New-Object -TypeName Byte[] -ArgumentList 10Mb
$obj = New-Object -TypeName System.Random
$obj.NextBytes($array)
for ($i=1; $i -le 1000; $i++) <
Set-Content -Path E:\File.txt$i -Value $array -Encoding Byte
>
Работает небыстро, но для ускорения можно запустить скрипт в несколько потоков.
как средствами windows 10 создать файл определенного размера заполненный текстом
как средствами windows создать файл определенного размера (не более 100 Гб) состоящий из одинаковых строк которые я задам?
Типа так:
харе кришна харе кришна
харе кришна харе кришна
харе кришна харе кришна
харе кришна харе кришна
харе кришна харе кришна
харе кришна харе кришна
.
(11) за 5 минут 90 килобайт. Через cmd и то быстрее, там за минуту 90 килобайт делалось ))))
Не вариант вообще.
Быстрее на PHP написать скрипт, закинуть его на веб сервер, и скачать файл по интернету.
Когда у меня стоял вопрос быстрого затирания большого объёма информации случайным мусором, то выяснилось, что быстрее всего работает проецирование файла в память, а потом выполнение встроенной функции CopyMemory.
Причём, если нужно получить много одинакового содержимого, то никто не запрещает копировать то, что уже записано, то есть сначала один блок — потом уже два и так далее.
Хотя, в вашем случае, если хочется Баt-файл:
ECHO «Место на диске кончается быстро» > A.TXT
:Begin
COPY /b A.TXT+A.TXT,B.TXT
COPY /b B.TXT+B.TXT,A.TXT
Goto :Begin
Правда, получится, как в анекдоте — два файла, но достаточно быстро.
P.S. не все системы выживают, когда на их системном диске заканчивается место.
(16) >> если хочется Баt-файл:
С чего ты это взял?
Но твой ответ в любом случае самый лучший.
Пример. Если нужно ровно десять миллионов строк, легко делаем сначала любым текстовым редактором 78125 строк подобным же способом, потом 7 раз их удваиваем через COPY /b A.TXT+A.TXT,B.TXT
(16) Блин, отличный способ!! Простейший. Работает, не могу нарадоваться. А главное как я сам (и все остальные) до него не догадался?
Если что, ТС — это я же. Просто ник забанили по неизвестной причине.
Точнее причина известна, и она указана, но не понятно почему забанен именно D_Pavel.






