Главная > Powershell > Создание файла произвольного размера

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

File:DC-Logo 128.png В те далёкие времена, когда только начали появляться домовые/районные сети и провайдеры (по крайней мере в моём городе), а интернет был сравнительно дорогим, файлы по сети распространялись по протоколу DC  благодаря уйме разных клиентов для работы с ним (не знаю может быть он и сейчас процветает, просто я им не пользуюсь). Все файлы хранились на компьютерах самих пользователей. Эдакий предок торрентов, с двумя существенными минусами:

  • Контент никак не модерировался, а это значит, что можно было скачать совсем не то, что ищешь. Я помню несколько раз сталкивался с ситуацией, когда качаешь вроде-бы какой-то мультик, а когда открываешь там оказывается г-г-нуха 🙂
  • В самих клиентах существовала (и наверное существует до сих пор) возможность запрета на скачивание, если у того, кто скачивает расшарено меньше какого-то объёма. Особо “продвинутые” меняли стандартный текст сообщения на что-то вроде “Пока не расшаришь 400 МБ скачать не дам”.

С первой проблемой можно было бороться предпросмотром по мере скачивания (хоть и работало не всегда), у второй проблемы было два решения: качать у другого пользователя (благо это делалось автоматически), или всё-таки что-то расшаривать в требуемом объёме. Хорошо, когда было, что расшаривать, а как быть если человек только купил компьютер, и на нём кроме самой системы ничего нет? (Кстати, некоторые то-ли от безысходности, то-ли по незнанию расшаривали саму систему).

В таких случаях приходила на помощь программа DummyFile, которая позволяет создать файл любого размера и заполнить его мусором. Нужно только указать путь к каталогу, в котором будет создаваться файл и его размер. Для себя я этой программой никогда не пользовался, а вот знакомым частенько “спасал” только что купленные девственно-чистые компьютеры.

С тех пор много пива воды утекло. А недавно ко мне обратился знакомый с вопросом как можно быстро заполнить винчестер, не важно чем, лишь бы заполнить (для каких-то проверочных целей). Тогда я ему посоветовал вышеупомянутую программу, чудом сохранившуюся у меня с тех пор (хотя судя по сайту с тех самых пор программа далеко в своем развитии не пошла :)).

А на днях попалась на глаза заметка, в которой речь идёт о том, как создать такой мусорный файл используя только Powershell и .NET-класс System.IO.File.

Итак, у скрипта будет два параметра – путь к будущему файлу и его размер:

param
(
    [Parameter(Mandatory=$true)]
    [string]$FilePath,
    
    [Parameter(Mandatory=$true)]
    [double]$Size
)

Создаём файл, задаём ему размер и закрываем файл:

$file = [System.IO.File]::Create($FilePath)
$file.SetLength($Size)
$file.Close()

Ну и на всякий случай проверяем:

if (Test-Path $FilePath)
{
    Write-Host -ForegroundColor Green "`nOK`n"
}
else
{
    Write-Warning "Файл не создан"
}

Напомню, что `nescape-последовательность перевода курсора на следующую строку.

Для примера создаём на диске D файл размером 2 ГБ:

New-EmptyFile.ps1 -FilePath D:\test.txt -Size 2gb

Существенным преимуществом этого способа по сравнению с DummyFile является скорость работы: программой файл размером 200 МБ, у меня создавался 18 сек., и чем больше размер файла, тем дольше он будет создаваться, через Powershell файл создаётся мгновенно независимо от размера хоть 200 МБ, хоть 2 ГБ.

Реклама
Рубрики:Powershell Метки: ,
  1. 03/04/2017 в 10:34

    Спасибо за статью, не знал что это можно сделать на пошике, до этого делал так:
    &(«$env:SystemRoot\System32\fsutil.exe») file createnew $home\BigFile.txt (20gb)

    • 03/04/2017 в 11:06

      Тоже имеет право на жизнь. Я всегда стараюсь в скриптах не использовать сторонних утилит, пусть даже и системных, исходя из того, что может случиться ситуация, что придётся запускать скрипт на не совсем здоровой, или урезанной/побитой системе, где нужной утилиты может не оказаться. Расплачиваться за это приходится временем на изобретение собственного велосипеда 🙂

  1. 26/03/2013 в 12:06

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: