Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Последовательность чисел в строке

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

Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: subuday77
Дата: 11-05-2013
Добрый день. Возникло затруднение: необходимо сгенерировать некую случайную последовательность из цифр от 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

Отправлено: 03:32, 11-05-2013

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Код: Выделить весь код
@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, 11-05-2013 в 07:21.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:06, 11-05-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Отправлено: 13:38, 11-05-2013 | #3


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата subuday77:
выдаёт значения одно за другим, но каждый раз в НОВОЙ строке. »
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..              
                          
  >
ЧЯДНТ?

Отправлено: 14:17, 11-05-2013 | #4


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


м.б. нужны пробелы между цифрами?
Код: Выделить весь код
0>nul set /p="%random:~1,1% "
Код: Выделить весь код
Enter length of string: 3
1 5 4   bye..

Отправлено: 15:39, 11-05-2013 | #5


Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


Огромное спасибо всем!
Решил сам, вот так:
Код: Выделить весь код
@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 куда-нибудь". Но как точно, не могу придумать.

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

Зарание благодарен всем!

Отправлено: 16:05, 11-05-2013 | #6


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Код: Выделить весь код
@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% "
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:52, 11-05-2013 | #7


Старожил


Сообщения: 352
Благодарности: 119

Профиль | Отправить PM | Цитировать


> возможно ли разделить пробелами цифры в моём коде?
конечно. вставь пробел, а не приклеивай вплотную.

[offtop]
%random:~1,1% сеет не очень равномерно:
0, 1 и 2 довольно стабильно получается заметно больше 3-:-9
Кроме того есть вероятность сгенерировать пустоту
Лучше использовать %random:~-1%
Код: Выделить весь код
@echo off &setlocal

set /a n=100000

call:0
echo call:1
for /l %%i in (%n%,-1,1) do (title %%i &call:1)
set from.%n%.
call:0
echo call:2
for /l %%i in (%n%,-1,1) do (title %%i &call:2)
set from.%n%.
goto:eof

:0
for %%d in (0 1 2 3 4 5 6 7 8 9) do set /a from.%n%.%%d=0
goto:eof

:1
set /a x=%random:~1,1%
call set /a from.%n%.%x% = %%from.%n%.%x%%% +1
goto:eof

:2
set /a x=%random:~-1%
call set /a from.%n%.%x% = %%from.%n%.%x%%% +1
goto:eof
выдача
Код: Выделить весь код
call:1
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
Отсутствующий операнд.
from.100000.0=12237
from.100000.1=12361
from.100000.2=11489
from.100000.3=9112
from.100000.4=9223
from.100000.5=9086
from.100000.6=9221
from.100000.7=9205
from.100000.8=9054
from.100000.9=9012
call:2
from.100000.0=9960
from.100000.1=10072
from.100000.2=9959
from.100000.3=9946
from.100000.4=9804
from.100000.5=10221
from.100000.6=10078
from.100000.7=9990
from.100000.8=10106
from.100000.9=9864
[/offtop]
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:55, 11-05-2013 | #8


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата 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

>

Отправлено: 17:01, 11-05-2013 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


В консоли Far Manager'а
читать дальше »
вообще должно быть :
Код: Выделить весь код
E:\Песочница\0248>echo %random%
%random%

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

E:\Песочница\0248>echo %random%
%random%
если только Вы не отключили внутреннюю обработку команды echo самим Far Manager'ом (TechInfo #54).

Отправлено: 18:02, 11-05-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Последовательность чисел в строке

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Последовательность действий Serg2010 AutoIt 6 20-11-2012 15:15
CMD/BAT - Последовательность действия Serg2010 Скриптовые языки администрирования Windows 1 17-11-2012 23:25
C/C++ - Последовательность чисел denver-312 Программирование и базы данных 7 02-01-2008 20:54
Загрузка - [решено] Последовательность загрузки. fat_cat Microsoft Windows 2000/XP 5 16-11-2007 13:59




 
Переход