Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 13

Брать рандомное слово из txt файла

12.10.2016, 15:46. Показов 3210. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите) есть такой скрипт:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
(
for %%i in (
 
"Текст: %random%"
 
) do (
 set string=%%~i
 for /f "delims=" %%j in ('
  call echo."%%string:$="%%
 ') do (
  echo.%%~j
  )
 )
)>"\Install\1.txt"
exit /b
Создает файл 1.txt с обычным рандом числом.
Но мне нужно что бы рандом брался из txt файла который я заполню своими отдельными словами, которая будет каждая с новой строчки.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2016, 15:46
Ответы с готовыми решениями:

Определить в K-ой строке файла fin.txt самое длинное слово и записать это слово и его длину в файл fout.txt
Есть задание: Определить в K-ой строке файла fin.txt самое длинное слово и сформировать текстовый файл fout.txt, в который записать это...

Как брать из внешнего .TXT файла макрос ?
Как брать из внешнего .TXT файла макрос(в модул)

Как брать данные из списка .txt и сохранить результат в другом .txt?
Приветствую Всех! Я плохо знаю язык пайтона, но мне нужно изменить этот код: import hashlib import base58 pubkey =...

12
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
12.10.2016, 18:30
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
set "file=test.txt"
set min=1
for /f "tokens=1* delims=:" %%i in ('findstr /vnc:"~" "%file%"^|sort /r') do set max=%%i&goto next2
:next1
pause&exit
:next2
cls
set /a num=%random%%%(max-min+1)+min
echo Строка N%num%
set /a n=num-1
<"%file%" more +%n%|set /p x=^&cmd /v/c "echo.&echo !x!"
echo.
choice /m "Выходим: "
goto next%errorlevel%
1
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 13
12.10.2016, 19:25  [ТС]
Спасибо большое. Но как бы мне соединить теперь эти 2 скрипта, что бы просто создавался txt и внутри рандом строка

Добавлено через 15 минут
Что бы в итоге примерно вот так было: открываю блокнот - Key: "рандом строка" thanks!
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
12.10.2016, 21:33
Цитата Сообщение от Rezhisser Посмотреть сообщение
Но как бы мне соединить теперь эти 2 скрипта
Хмм, попробуйте приложить и собственные усилия немного... подумайте, попытайтесь составить описание того, что в итоге хочется получить, только последовательно, по шагам и если уж совсем ничего не получится, тогда отпишите просьбу ещё раз...
Но подробное описание, в любом случае понадобится. Ведь совсем непонятно, что Вы пытаетесь сделать - "открыть блокнот и увидеть строку", это не совсем описание, вернее совсем не описание...
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
12.10.2016, 21:59
Windows Batch file
1
2
3
4
5
@echo off
set "f=file.txt"
<"%f%" (for /f "tokens=1*" %%a in ('"cmd/v/c for /f "delims^=" %%a in ('more') do @echo !random! %%a|sort"') do @set "s=%%b")
echo:Рандом строка из файла "%f%" - [%s%]
pause>nul
.
2
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,888
13.10.2016, 00:31
дорогой друг alpap,
у меня болтается для экспериментов файл стандартного юниксового словаря dictionary.dxt
Bash
1
2
$ wc -l dictionary.txt
349900 dictionary.txt
то есть, там 350'000 строк.
его-то я и подсунул твоему скрипту,
предварительно убрав pause
Bash
1
time ./randomline.bat
Как бы ты оценил время выбора произвольной строки ?
( вирт. Windows XP, процессор i5, память 2Gb, диск SSD )
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
13.10.2016, 12:03
Цитата Сообщение от volodin661 Посмотреть сообщение
у меня болтается для экспериментов файл стандартного юниксового словаря dictionary.dxt
И часто экспериментировать приходится именно в cmd? Учитывая его хроническое неприятие, в принципе.


Цитата Сообщение от volodin661 Посмотреть сообщение
Как бы ты оценил время выбора произвольной строки ?
Оценивай:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@echo off
set "file=dictionary.txt"
set min=1
 
echo Start read file: %time%
findstr /vnc:"~" "%file%"|gsort -n -t : -k 1 -r >$
<$ find ":"|set /p x=^&cmd /v/c echo !x! >num
echo Stop read file: %time%
pause
for /f "tokens=1 delims=:" %%i in ('type num') do set max=%%i&goto next2
:next2
cls
set /a num=%random%%%(max-min+1)+min
echo Строка N%num%
for /f "tokens=1* delims=:" %%a in ('findstr /rbc:"\<%num%\>" "$"') do echo.%%b
echo.
choice /m "Выходим: "
goto next%errorlevel%
:next1
>nul 2>&1 del $
>nul 2>&1 del num
:next0
:next255
pause&exit
- учитывая отвратительную функциональность виндового sort, используется сортировщик из комплекта GnuWin32.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
13.10.2016, 13:58
Нормально получилось, YuS_2,
На словаре в 3 ляма строк после сортировки (qsort очень быстро это делает - буквально несколько секунд) время выборки рандомной строки 1-3 секунды.
На 300_000 строк - меньше секунды.
0
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,888
13.10.2016, 14:11
dictionary.txt ( отсортированный ), 350'000 строк.

код, показанный в #7:
8 секунд
и никаких других слов кроме слов на a или b не выбирается.

код, показанный в #5:
12 минут

Добавлено через 3 минуты
Bash
1
shuf -n 1 dictionary.txt
0.03 сек
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
13.10.2016, 15:16
Цитата Сообщение от volodin661 Посмотреть сообщение
и никаких других слов кроме слов на a или b не выбирается.
Да, точно - сразу не обратил внимание. А все потому %random% имеет максимум = 32767. Еще одно ограничение cmd-ных команд.
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
13.10.2016, 17:11
Не, там что-то другое. Ограничение рандома здесь не мешает. Выложите, плиз, словарь - проверю вечерком...
Да, действительно, там ведь формула совсем простая и она не даст числа больше ограничения рандома...

Добавлено через 8 минут
Цитата Сообщение от Garry Galler Посмотреть сообщение
qsort очень быстро это делает - буквально несколько секунд
Тут скорее не заслуга gsort-а, а findstr, именно он быстро делает выборку... а виндовый сортировщик просто давится большим количеством строк. Но на относительно небольшом массиве текста, он тоже достаточно быстро сортирует. Вот только сортирует он очень дубово, всё подряд и никаких полей в строке, да и с цифрами работает коряво, сравнение идет посимвольное... в общем, лучше сразу заменить его на что-то более функциональное.

Добавлено через 3 минуты
Цитата Сообщение от volodin661 Посмотреть сообщение
0.03 сек
Ну, сравнивать bash и cmd, думаю не совсем корректно и бесперспективно, в виду безусловного преимущества первого при аналогичных задачах. Не просто так ведь микрософт подселил его в windows... наконец таки.
0
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,888
13.10.2016, 23:33
Цитата Сообщение от YuS_2 Посмотреть сообщение
Не просто так ведь микрософт подселил его в windows... наконец таки.
1) не думаю, что это была забота о пользователях Windows

'наконец таки.'
2) подсистема Unix-shell присутствовала в ветке Windows NT всегда, начиная с Windows NT 4.0 и вплоть до
Windows 7. В Windows 8 её выпилили.
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
14.10.2016, 06:23

Не по теме:

Цитата Сообщение от volodin661 Посмотреть сообщение
подсистема Unix-shell присутствовала в ветке Windows NT всегда
Ну, речь шла о bash и Linux, а его таки внедрили только в десятке...
Цитата Сообщение от volodin661 Посмотреть сообщение
вплоть до Windows 7.
Если не ошибаюсь, то корпоративка и максимальная, а в остальных вроде бы недоступно... ну да ладно, это, собственно, уже ненужные тонкости...



По теме:
Цитата Сообщение от Garry Galler Посмотреть сообщение
%random% имеет максимум = 32767
Можно псевдо-рандом соорудить с обходом ограничения:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@echo off
set "file=dictionary.txt"
set min=1
set n=0
set chr=0 1 2 3 4 5 6 7 8 9
set ir=10 &:разрядность цифр
 
echo Start read file: %time%
findstr /vnc:"~" "%file%"|gsort -n -t : -k 1 -r >$
<$ find ":"|set /p x=^&cmd /v/c echo !x! >num
echo Stop read file: %time%
pause
setlocal enabledelayedexpansion
for /f "tokens=1 delims=:" %%i in ('type num') do set istr=%%i&goto iloop
:iloop
set ind=!istr:~%cnt%,1!
if not "%ind%"=="" set /a cnt+=1&goto iloop
endlocal&set max=%cnt%&set var=%istr%
:next2
set "num="
cls
set /a inum=%random%%%(max-min+1)+min
set im=%inum% &:число знаков номера (рандом)
:loop
set /a k=1+%ir%*%random%/32768
for /f "tokens=%k%" %%i in ("%chr%") do (set num=%%i%num%)
if %num:~,1%==0 set "num="&goto loop
set /a im-=1
if %im% gtr 0 goto loop
if %num% gtr %var% goto next2
echo Строка N %num%
for /f "tokens=1* delims=:" %%a in ('findstr /rbc:"\<%num%\>" "$"') do echo.%%b
echo.
choice /m "Выходим: "
goto next%errorlevel%
:next1
>nul 2>&1 del $
>nul 2>&1 del num
:next0
:next255
pause&exit
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.10.2016, 06:23
Помогаю со студенческими работами здесь

Как брать числа из списка .txt и сохранение в другой .txt ?
Приветствую Всех Друзья! Не силен в Пайтоне, но нужно изменить код. В этом скрипте есть формула где в начале задаются числы x1 и x2 в...

Как удалить слово из txt файла?
При нажатии на кнопку, должно, допустим в test.txt файле, в котором много строк со словами, удалить слово &quot;год&quot;, но не всю строку...

Извлечь определённое слово из .txt файла в textBox
Уважаемые программисты, владеющие языком C#! Я - новичок в программировании и вот мой ступор: Задача следующая: Имеется текстовый файл...

Файл: Переписать текст в t3.txt сначала из файла t1.txt, а потом из файла t2.txt
1) Переписать текст в t3.txt сначала с файла t1.txt, а потом с файла t2.txt 2) Файл t2.txt перенесите в папку K2 3) Файл t1.txt...

Определить в K-ой строке файла fin.txt первое и последнее слово, поменять их местами
Дано: в текстовом файле fin.txt находится текст на русском языке. С клавиатуры вводится число K. Требуется: определить в K-ой строке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru