Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Создание файлов рандомного размера (http://forum.oszone.net/showthread.php?t=326366)

Freem 28-04-2017 15:26 2732965

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

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

Код:

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

alpap 29-04-2017 00:49 2733038

Легко:
Код:

@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 2733081

с рандомным диапазоном и именем
Код:

@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 2733307

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

Вот батник, который формирует более разнообразные имена, чем у уважаемого alpap, но он существенно длинее. Содержимое, увы, как и у alpap, совершенно неслучайное
Код:

@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


Время: 22:44.

Время: 22:44.
© OSzone.net 2001-