Иногда бывают ситуации, в которых требуется быстро создать один или несколько файлов произвольного размера. Операционная система 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-утилитой fsutil.exe. Эта утилита командной строки, которую можно использовать для управления дисковыми квотами, различными манипуляциями с объектами файловой системы, а также для выполнения различных манипуляций с файлами.
Например, вы тестируете работу модуля статистики вашего почтового сервера, и вам нужно создать файл размером 10 Мб и отправить его по почте. Наберите в командной строке с повышенными привилегиями следующую команду:
fsutil file createnew C:\10mb-file.txt 10000000
Эта команда создаст в корне диска C:\ новый файл с именем ’10mb-file.txt’, размером 10000000 байт (10 Мб).
На линухах я бы сделал так:
dd if=/dev/random of=storage.dvr bs=1024 count=30000000
В винде пользуюсь для создания пустых файлов заданного размера:fsutil file createnew c:\storage.dvr 1074000000
А вот для заполненных данными… Может как-то так:
echo 1 > file
for /L %i in (1,1,1000) do echo %i >> file
PowerShell. Создает файл в C:\Temp, заполненяет диск C: оставляя только 10 МБ:
[io.file]::Create(«C:\temp\bigblob.txt»).SetLength((gwmi Win32_LogicalDisk -Filter «DeviceID=’C:'»).FreeSpace — 10MB).Close
Источник
Вопрос зачем это нужно? Если для очистки свободного пространства от старых данных то нужно гуглить по «wipe disk», если же для какой то другой цели есть самопальная утилита, которая как раз этим занимается, потом еще проверяет, что то что он записал и то что он потом считывает это одно и тоже.
Sometimes, to test a system (program interactions, email, filters), you need to create a file of a certain size. Windows has two standard tools for creating a custom size file.
Content
- Create file using command prompt
- Create file using PowerShell
Article in other languages:
?? – Cómo crear un archivo de tamaño específico en Windows
?? – Как создать файл определенного размера в Windows
?? – Comment créer un fichier de taille spécifique sous Windows
?? – So erstellen Sie eine Datei mit einer bestimmten Größe in Windows
?? – Hoe maak je een bestand met een specifieke grootte in Windows
Create file using command prompt
Use the fsutil command to create a file of the specified size using the Windows command prompt. The file size for this command is specified in bytes.
Create 1 MB TestFile.txt:
fsutil file createnew D:\TestFile.txt 1048576
If you get “Error: Access denied” when creating a file at the specified location – run command prompt as administrator.
Create file using PowerShell
Create empty file of specified size
To create a file of a specific size with Windows PowerShell, use the following sequence of commands (file size is specified in: Kb, Mb, Gb):
$file = New-Object -TypeName System.IO.FileStream -ArgumentList D:\TestFile.txt,Create,ReadWrite
$file.SetLength(1Mb)
$file.Close()
Windows PowerShell will create an empty file (filled with NULL characters) of the selected size.
If, when creating a file in the specified location, you receive an error: “New-Object : Exception calling “.ctor” with “3” argument(s): “Access to the path … “- run Windows PowerShell as administrator.
Create non-empty file of given size
To create a 1 MB non-empty file (random content), run the Windows PowerShell commands:
$array = New-Object -TypeName Byte[] -ArgumentList 2Mb
$obj = New-Object -TypeName System.Random
$obj.NextBytes($array)
Set-Content -Path D:\TestFile.txt -Value $array -Encoding Byte
File creation speed will depend on the specified file size and the specifications of your computer.
Create multiple files of a given size
Create 5 non-empty files (random content) 1MB in size using Windows PowerShell:
$array = New-Object -TypeName Byte[] -ArgumentList 1Mb
$obj = New-Object -TypeName System.Random
$obj.NextBytes($array)
for ($i=1; $i -le 5; $i++) {Set-Content -Path D:\Test\TestFile$i.txt -Value $array -Encoding Byte}
The speed of files creation will depend on the specified files size and the characteristics of your computer.
? How to create a file of a specific size has been discussed in this article. Now you can create a file or several files of arbitrary size for testing programs or services. However, if you run into any problems, do not hesitate to write in the comments. I will try to help.
Необходимость создать файл определенного размера возникает, когда надо, например, потестировать пропускную способность почтового ящика либо даже дисковой подсистемы на практике, но лень искать готовые файлы подходящего размера.
Возможность создать файл заданного размера в Windows есть, реализуется она через командную строку.
fsutil — это консольная утилита для управления объектами файловой системы.
file — это параметр утилиты fsutil, работающий с файлами
createnew — это, как нетрудно догадаться, параметр, создающий новый объект на диске
далее идет путь к файлу, который надо создать, и его размер в байтах (все аргументы и значения вводятся через пробел).
Таким образом, приведенная в примере команда создает файл, лежащий в корне диска C: с именем 10mb-file.txt размером в 10 миллионов байт.