CMD/BAT - [решено] Последовательность чисел в строке
-
subuday77
CMD/BAT - [решено] Последовательность чисел в строке
Добрый день. Возникло затруднение: необходимо сгенерировать некую случайную последовательность из цифр от 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
@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 - [решено] Последовательность чисел в строке
Код:
Код: Выделить всё
@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 - [решено] Последовательность чисел в строке
Прошу прощения, но это не то... Представленная программа выдаёт значения одно за другим, но каждый раз в НОВОЙ строке. А мне бы хотелось получить все значения в ОДНУ строку. Как-то так: 2 4 8 9 6 3, на пример.
-
subuday77
Re: CMD/BAT - [решено] Последовательность чисел в строке
Цитата subuday77:
выдаёт значения одно за другим, но каждый раз в НОВОЙ строке.
1.cmd:
Код:
ЧЯДНТ?
выдаёт значения одно за другим, но каждый раз в НОВОЙ строке.
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 - [решено] Последовательность чисел в строке
м.б. нужны пробелы между цифрами?
Код:
Код:
Код:
Код: Выделить всё
0>nul set /p="%random:~1,1% "Код:
Код: Выделить всё
Enter length of string: 3
1 5 4 bye..-
kiripanda
Re: CMD/BAT - [решено] Последовательность чисел в строке
м.б. нужны пробелы между цифрами?
Код:
Код:
Код:
Код: Выделить всё
0>nul set /p="%random:~1,1% "Код:
Код: Выделить всё
Enter length of string: 3
1 5 4 bye..-
subuday77
Re: CMD/BAT - [решено] Последовательность чисел в строке
Огромное спасибо всем!
Решил сам, вот так:
Код:
Работает. Теперь другой вопрос. С помощью какой команды можно установить ограничение на переменную %I% таким образом, чтобы ввести можно было только цифры? Я мыслю, что-то типа "IF %I% NOT ERRORLEVL ??????? GOTO куда-нибудь". Но как точно, не могу придумать.
А с пробелами между цифрами, в предыдущем сообщени я не понял... Как их сделать? И возможно ли разделить пробелами цифры в моём коде?
Зарание благодарен всем!
Решил сам, вот так:
Код:
Код: Выделить всё
@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 - [решено] Последовательность чисел в строке
Код:
Код: Выделить всё
@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:
Лучше использовать %random:~-1%
попробуй %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
>
Лучше использовать %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 - [решено] Последовательность чисел в строке
В консоли Far Manager'а
вообще должно быть
:
Код:
если только Вы не отключили внутреннюю обработку команды echo самим Far Manager'ом (TechInfo #54).
читать дальше »
вообще должно быть
:Код:
Код: Выделить всё
E:\Песочница\0248>echo %random%
%random%
E:\Песочница\0248>echo %random%
%random%
E:\Песочница\0248>echo %random%
%random%если только Вы не отключили внутреннюю обработку команды echo самим Far Manager'ом (TechInfo #54).