PDA

Показать полную графическую версию : [решено] Создание файлов рандомного размера


Freem
28-04-2017, 15:26
Добрый день

Подскажите пожалуйста, пример батника, для генерации файлов рандомного размера с рандомными данными и именами.
Например, с помощью fsutil можно сделать файл с конкретным размером:

fsutil file createnew C:\file 100000

В идеале нужно, чтобы батник работал примерно так:
1. Спрашивает сколько файлов нужно создать
2. Спрашивает диапазон размера создаваемых файлов, например в формате "1000-5000" кб
3. Далее, генерирует файлики и кладет их рядом с собой или в указанную папку

alpap
29-04-2017, 00:49
Легко:

@echo off
set /p nf="Имя и расширение файла: "
set /p m="Сколько файлов создавать: "
set /p sz="Размер файла в байтах: "
for /l %%a in (1 1 %m%) do call :# "%nf%"
exit

:#
if not exist "%~n1%n%%~x1" (fsutil file createnew "%~n1%n%%~x1" %sz%) else (set /a n+=1& goto #)
exit /b

alpap
29-04-2017, 11:40
с рандомным диапазоном и именем

@echo off
set /p m="Сколько файлов создавать: "
set /p sz_min="Размер файла в байтах от: "
set /p sz_max="Размер файла в байтах до: "
for /l %%a in (1 1 %m%) do call :# "%%a"
exit

:#
set /a "sz=%random%%%(sz_max-sz_min+1)+sz_min"
fsutil file createnew "%random%%~1%random%" %sz%
exit /b

megaloman
30-04-2017, 22:47
Freem, Вы хотели получить файлы рандомного размера с рандомными данными и именами. @Echo Off
cls

Set /A NFiles=3
Set /A MinSkb=2
Set /A MaxSkb=5

Set "BoxOut=Z:\Box_Out"

Set "Symb=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИ ЙКЛМНОПРСТУФХЧЧШЩЪЫЬЭЮЯ1234567890 "

Set /A MinS=%MinSkb%*1024
Set /A MaxS=%MaxSkb%*1024

Set /A Nstr=2500
Set /A MinName=8
Set /A MaxName=16

SetLocal EnableExtensions EnableDelayedExpansion

Call :LenString "%Symb%" "NSymb"

FOR /L %%x IN (1,1,%NFiles%) DO Call :Make

rem pause
GoTo :Eof

:Make
Set /A "iSize=%random%%%(MaxS-MinS+1)+MinS"
Set /A "nName=%random%%%(MaxName-MinName+1)+MinName"

Set "iNFile="
FOR /L %%i IN (1,1,%nName%) DO (
Set /A iSymb=!Random!%%%NSymb%
Call Set "S1=%%Symb:~!iSymb!,1%%"
Set "iNFile=!iNFile!!S1!"
)

Set /A All=0
Set /A istr=0
Set "Str="

FOR /L %%i IN (1,1,!iSize!) DO (
Set /A iSymb=!Random!%%%NSymb%
Call Set "S1=%%Symb:~!iSymb!,1%%"
Set "Str=!Str!!S1!"
Set /A All+=1
If !All!==!iSize! (
<Nul Set /P $V=!Str!>>"%BoxOut%\!iNFile!"
rem Echo == !iNFile! ===== !MinSkb! !MaxSkb! !iSize! !istr! !All!
GoTo :Eof
)
Set /A istr+=1
If !istr!==%Nstr% (
<Nul Set /P $V=!Str!>>"%BoxOut%\!iNFile!"
rem Echo ++ !iNFile! +++++ !MinSkb! !MaxSkb! !iSize! !istr! !All!
Set /A istr=0
Set "Str="
)
)
GoTo :Eof

rem Длина строки "%1" в переменную с именем "%2"
:LenString
Set /A %~2=-1
Set "$$$$$$=%~1"
FOR /L %%i IN (0,1,9999) DO (
Call Set "ii=%%$$$$$$:~%%i,1%%"
If Not "!ii!"=="" (Set %~2=%%i) Else (GoTo :Continue)
)
:Continue
Set /A %~2+=1
GoTo :Eof
@Echo Off
cls

Set /A NFiles=3
Set /A MinSkb=10
Set /A MaxSkb=50

Set "BoxOut=Z:\Box_Out"

Set "Symb=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИ ЙКЛМНОПРСТУФХЧЧШЩЪЫЬЭЮЯ1234567890 "

Set /A MinS=%MinSkb%*1024
Set /A MaxS=%MaxSkb%*1024

Set /A Nstr=2500
Set /A MinName=8
Set /A MaxName=16

SetLocal EnableExtensions EnableDelayedExpansion

Call :LenString "%Symb%" "NSymb"

FOR /L %%x IN (1,1,%NFiles%) DO Call :Make

rem pause
GoTo :Eof

:Make
FOR /L %%i IN (1,1,10) DO Set /A "iSize=!random!%%(MaxS-MinS+1)+MinS"
FOR /L %%i IN (1,1,10) DO Set /A "nName=!random!%%(MaxName-MinName+1)+MinName"

Set "iNFile="
FOR /L %%i IN (1,1,%nName%) DO (
Set /A iSymb=!Random!%%%NSymb%
Call Set "S1=%%Symb:~!iSymb!,1%%"
Set "iNFile=!iNFile!!S1!"
)
fsutil file createnew "%BoxOut%\!iNFile!" !iSize! >nul
GoTo :Eof

rem Длина строки "%1" в переменную с именем "%2"
:LenString
Set /A %~2=-1
Set "$$$$$$=%~1"
FOR /L %%i IN (0,1,9999) DO (
Call Set "ii=%%$$$$$$:~%%i,1%%"
If Not "!ii!"=="" (Set %~2=%%i) Else (GoTo :Continue)
)
:Continue
Set /A %~2+=1
GoTo :Eof

Использовал скрипты alpap




© OSzone.net 2001-2012