CMD/BAT - [решено] Последовательность чисел в строке

Аватара пользователя
subuday77

CMD/BAT - [решено] Последовательность чисел в строке

Сообщение subuday77 »

Добрый день. Возникло затруднение: необходимо сгенерировать некую случайную последовательность из цифр от 0 до 9, причём так, чтобы кол-во цифр задавалось пользователем. В столбик я сумел это сделать. А как в строчку? Вот мой код:



@echo off

set t=0

echo:Set key length

set /p l=

cls

:1

set /A t=t+1

Set /A q=(%RANDOM%%%9)

echo:%q%

if %t% neq %l% goto 1

pause



Вот доведённая до ума программа, но, всё равно, хотелось бы результаты в строчку. Зарание спасибо.



@echo off

mode con: cols=38 lines=20 & color 1F

:2

cls

set t=0

echo:Set key length

set /p l=

cls

echo:

echo: KEYMASTER

echo:

echo: ====================================

:1

set /A t=t+1

Set /A q=(%RANDOM%%%9)

echo: %q%

if %t% neq %l% goto 1

echo: ====================================

pause

:3

echo:One more key? (Y/N)

set /p a=

if %a%==Y goto 2

if %a%==y goto 2

if %a%==N goto 4

if %a%==n goto 4

cls & echo:Yes or No, please & goto 3

:4

cls

echo:Good bye!

pause
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Последовательность чисел в строке

Сообщение Foreigner »

Код:

Код: Выделить всё

@echo off
setlocal
set /p n="Enter length of string: "
for /l %%i in (1,1,%n%) do call:1
echo.  bye..
goto:eof
:1
0>nul set /p="%random:~1,1%"
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Последовательность чисел в строке

Сообщение Foreigner »

Прошу прощения, но это не то... Представленная программа выдаёт значения одно за другим, но каждый раз в НОВОЙ строке. А мне бы хотелось получить все значения в ОДНУ строку. Как-то так: 2 4 8 9 6 3, на пример.
Аватара пользователя
subuday77

Re: CMD/BAT - [решено] Последовательность чисел в строке

Сообщение subuday77 »

Цитата subuday77:



выдаёт значения одно за другим, но каждый раз в НОВОЙ строке.
CMD/BAT - [решено] Последовательность чисел в строке




1.cmd:



Код:

Код: Выделить всё

  > 1                     
Enter length of string: 2 
62  bye..                 
  > 1                     
Enter length of string: 3 
668  bye..                
  > 1                     
Enter length of string: 4 
8525  bye..               
  > 1                     
Enter length of string: 5 
58646  bye..              
  >

ЧЯДНТ?
Аватара пользователя
subuday77

Re: CMD/BAT - [решено] Последовательность чисел в строке

Сообщение subuday77 »

м.б. нужны пробелы между цифрами?



Код:

Код: Выделить всё

0>nul set /p="%random:~1,1% "



Код:

Код: Выделить всё

Enter length of string: 3
1 5 4   bye..
Аватара пользователя
kiripanda

Re: CMD/BAT - [решено] Последовательность чисел в строке

Сообщение kiripanda »

м.б. нужны пробелы между цифрами?



Код:

Код: Выделить всё

0>nul set /p="%random:~1,1% "



Код:

Код: Выделить всё

Enter length of string: 3
1 5 4   bye..
Аватара пользователя
subuday77

Re: CMD/BAT - [решено] Последовательность чисел в строке

Сообщение subuday77 »

Огромное спасибо всем!

Решил сам, вот так:



Код:

Код: Выделить всё

@echo off
mode con: cols=38 lines=20 & color 2F
:1
cls
echo:Enter key length
set /p I=
set N=10
set CHAR=0 1 2 3 4 5 6 7 8 9
:LOOP
set /a R=1+%N%*%random%/32768
for /f "tokens=%R%" %%q in ("%CHAR%") do (set T=%%q%T%)
Set /a I-=1
If %I% GTR 0 goto LOOP
cls
echo:
echo:
echo:             KEYMASTER-2
ECHO: ************************************
echo:
echo:                %T%
echo:
echo: ************************************
set T=
pause
:3
echo:One more key? (Y/N)
set /p a=
if %a%==Y goto 1
if %a%==y goto 1
if %a%==N goto 4
if %a%==n goto 4
cls & echo:Yes or No, please & goto 3
:4
cls
echo:Good bye!
pause

Работает. Теперь другой вопрос. С помощью какой команды можно установить ограничение на переменную %I% таким образом, чтобы ввести можно было только цифры? Я мыслю, что-то типа "IF %I% NOT ERRORLEVL ??????? GOTO куда-нибудь". Но как точно, не могу придумать.



А с пробелами между цифрами, в предыдущем сообщени я не понял... Как их сделать? И возможно ли разделить пробелами цифры в моём коде?



Зарание благодарен всем!
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Последовательность чисел в строке

Сообщение Foreigner »

Код:

Код: Выделить всё

@echo off
setlocal
:0
set "n=0"
set /p n="Enter length of string: "
if %n% equ 0 set "n=null"
echo.%n%| 1>nul findstr "[^0-9]" && echo %n%: WRONG input value && goto:0
for /l %%i in (1,1,%n%) do call:1
echo bye..
goto:eof
:1
0>nul set /p="%random:~1,1% "
Аватара пользователя
kiripanda

Re: CMD/BAT - [решено] Последовательность чисел в строке

Сообщение kiripanda »

Цитата kiripanda:



Лучше использовать %random:~-1%
CMD/BAT - [решено] Последовательность чисел в строке




попробуй %random:~0,1% получишь последовательности вида:


Цитата:



22111

11333

12221



А в консоли FAR'a вообще прикол:


Цитата:



> echo %random%

6063



> echo %random%

6070



> echo %random%

6073



> echo %random%

6076



> echo %random%

6079



> echo %random%

6083



> echo %random%

6083



>
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Последовательность чисел в строке

Сообщение Foreigner »

В консоли Far Manager'а
читать дальше »


вообще должно быть Изображение:



Код:

Код: Выделить всё

E:\Песочница\0248>echo %random%
%random%
E:\Песочница\0248>echo %random%
%random%
E:\Песочница\0248>echo %random%
%random%

если только Вы не отключили внутреннюю обработку команды echo самим Far Manager'ом (TechInfo #54).
Ответить

Вернуться в «Скриптовые языки администрирования Windows»