Создаем файл определенного размера в Windows

 

Создаем файл. Иногда может потребоваться создать для тестирования какой-то системы файл определенного размера. Операционная система ОС Windows предлагает два пути решения.

Создание файла с помощью fsutil

Быстрее и проще всего создать файл с помощью утилиты командной строки fsutil. Для примера откроем консоль (обязательно с правами администратора) и создадим на диске E файл file.txt размером 1ГБ командой:

fsutil file createnew E:\File.txt 1000000000

Таким образом можно создать файл любого размера, причем файл создается практически мгновенно.

Создаем файл определенного размера в Windows
Создание файла с помощью fsutil

Создаем файл с помощью PowerShell

То же самое можно сделать с помощью PowerShell, хотя команды будут немного сложнее:

$file = New-Object -TypeName System.IO.FileStream -ArgumentList E:\File.txt,Create,ReadWrite
$file.SetLength(1000Mb)
$file.Close()

Здесь мы сначала создаем объект типа файл, а затем с помощью метода SetLength присваиваем ему необходимый размер. Таким способом также можно мгновенно создать файл любого размера. Полезная статья по PowerShell.

Создаем файл определенного размера в Windows

Есть и еще один, альтернативный способ создания файла с помощью 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″.

Создаем файл определенного размера в Windows

Все описанные  способы создают пустые файлы (точнее файлы, заполненные символом 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

Создаем файл определенного размера в Windows

Создаем файл. Генерация большого количества файлов (напр. 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
}

Работает небыстро, но для ускорения можно запустить скрипт в несколько потоков.

Возможно вам будет интересно прочитать про — Подборка программ — инструментов для системного администратора