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

Запуск случайного (рандомного) файла в директории

15.08.2012, 07:22. Показов 21551. Ответов 20

Студворк — интернет-сервис помощи студентам
Здравствуйте обитатели сайберфорума!
Требуется батник, запускающий произвольный файл в указанной папке.
Сложно ли это реализовать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.08.2012, 07:22
Ответы с готовыми решениями:

Запуск случайного файла .kfn через bat
Всем привет. Есть папка в которой около 20 папок и примерно 200 файлов формата .kfn - запускаются с помощью KarafunPlayer2. Нужен батник...

Запуск рандомного трека через MediaPlayer
У меня есть необходимость, запустить музыку в приложение. Таким образом запускается у меня один трек, который играется по другу....

Запуск файла в директории с .bat, когда .bat запущен от имени администратора
Здравствуйте. Имею бат, он должен запускать файл "<тут директория батника>\n1.bat". Но если даже вписывать cd "%~dp0" и...

20
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.08.2012, 12:35
Bash
1
Start "" "c:\Книга1.xls"
0
1 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 9
15.08.2012, 13:06  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
Bash
1
Start "" "c:\Книга1.xls"
спасибо за оперативность!

извините за неточную формулировку, ситуация такая:
В папке находится несколько файлов (точное количество неизвестно)
требуется запустить один из этих файлов, но "рандомно", чтобы батник запустил случайный файл, соответственно при следующем запуске этого же батника будет запускаться каждый раз новый файл из указанной папки. Если это трудно реализуется, то подойдет метод с "перебором" по порядку.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
15.08.2012, 14:05
Лучший ответ Сообщение было отмечено Dragokas как решение

Решение

Code
1
2
3
4
5
6
7
8
9
setlocal EnableDelayedExpansion
set i=0
for %%f in (*.*) do (
    set file!i!=%%f
    set /a i+=1
)
set /a n=%random% %% %i%
set file=!file%n%!
start "" "%file%"
2
1 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 9
15.08.2012, 14:25  [ТС]
Цитата Сообщение от Somebody Посмотреть сообщение
Code
1
2
3
4
5
6
7
8
9
setlocal EnableDelayedExpansion
set i=0
for %%f in (*.*) do (
    set file!i!=%%f
    set /a i+=1
)
set /a n=%random% %% %i%
set file=!file%n%!
start "" "%file%"
Да, это то что нужно!
Но если файлов в папке немного, то батник часто запускает сам себя, , что приводит к открытию около 10-30 (!) черных окон одновременно...
Можно ли исключить запуск бат файлом самого себя? А еще лучше - указать в нем папку, в которой лежат файлы, например d:\012_Музон\
пробовал путь к папке указывать в кавычках после start в последней строке, но ничего не вышло, как сделать это правильно?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.08.2012, 14:46
Этот путь нужно дописать после скобки (строка № 3).
Естественно, бат убрать из папки.
1
1 / 0 / 0
Регистрация: 13.03.2012
Сообщений: 9
15.08.2012, 16:06  [ТС]
Все отлично работает!
Большое спасибо!
0
laydme
07.03.2013, 14:18
Цитата Сообщение от Dragokas Посмотреть сообщение
Этот путь нужно дописать после скобки (строка № 3).
Естественно, бат убрать из папки.
привет, в папке работает, а вот с написанием пути проблема, ни чего не происходит, не могли бы пример написать куда прописать путь к директории?
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
10.03.2013, 03:56
Bash
3
for %%f in ("c:\здесь\*.*") do (
0
Yaromax
12.07.2013, 10:01
Somebody, Огромное спасибо! Давно искал что-то подобное, пробовал писать сам, но этот вариант именно то, что надо. Пошел учить командную строку и .bat файлы дальше
 Аватар для chaleureux
25 / 28 / 19
Регистрация: 24.12.2014
Сообщений: 1,260
19.08.2020, 11:48
А обойти нельзя если батник лежит рядом с папкой в которой нужно искать
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
19.08.2020, 12:18
Заменить в коде Somebody:

Windows Batch file
1
for %%f in ("%~dp0здесь\*.*") do (
0
0 / 0 / 0
Регистрация: 18.07.2022
Сообщений: 9
18.07.2022, 16:46
У меня почему-то не работает... Просто открывает саму папку, но не запускает файл из нее.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
18.07.2022, 18:31
Цитата Сообщение от Keyord Посмотреть сообщение
У меня почему-то не работает... Просто открывает саму папку, но не запускает файл из нее.
Пробуйте:
Windows Batch file
1
2
3
4
5
6
7
@echo off
set "folder=C:\test"
for /f "tokens=* delims=" %%a in ('powershell -executionpolicy bypass -command "(Get-ChildItem '%folder%' -file | Get-Random).fullname"') do (
    start "" "%%a"
)
pause
exit
Примечание
- Во 2-ой строчке вместо C:\test необходимо указать путь к каталогу
0
 Аватар для Angry Old Man
3004 / 744 / 313
Регистрация: 26.03.2022
Сообщений: 1,390
Записей в блоге: 1
19.07.2022, 15:15
Если указывать путь к каталогу (батник может лежать вместе с файлами)
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
@Echo Off
cls
    Set "FileIn=Z:\Box_In\*.*"
    Set /A Max=0
    For %%i In ("%FileIn%") Do (
        Call Set R=%%random%%
        Echo %%i |>nul Find /I "%~nx0" ||(Call Set /A Max+=1 &Call Set "@@%%Max%%=%%i")
    )
    Set /A R=1+%Max%*%random%/32768
    Call Start "" "%%@@%R%%%"
Exit /B
Если батник рядом с файлами, то
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@Echo Off
cls
    Set /A Max=0
    For %%i In (*.*) Do (
        Call Set R=%%random%%
        Echo %%i |>nul Find /I "%~nx0" ||(Call Set /A Max+=1 &Call Set "@@%%Max%%=%%i")
    )
    Set /A R=1+%Max%*%random%/32768
    Call Start "" "%%@@%R%%%"
Exit /B
0
0 / 0 / 0
Регистрация: 18.07.2022
Сообщений: 9
25.07.2022, 18:08
спасибо, работает! но как сделать так, чтобы в качестве директории была не одна папка, а несколько, расположенных в одной надпапке?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
25.07.2022, 18:13
Keyord, к кому обращение?
0
0 / 0 / 0
Регистрация: 18.07.2022
Сообщений: 9
25.07.2022, 18:15
к вам
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
25.07.2022, 18:16
Keyord, не совсем понял, что значит не одна папка, а несколько, расположенных в одной надпапке?
0
0 / 0 / 0
Регистрация: 18.07.2022
Сообщений: 9
25.07.2022, 20:01
допустим есть папка "folders"
в ней есть папки "folder1", "folder2" и "folder3", в каждой из них есть по несколько разных фотография. И нужно чтобы батник открывал любую фотографию из всех этих трех папок, воспринимая их как единую директорию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.07.2022, 20:01
Помогаю со студенческими работами здесь

Запуск случайного видео на фоне
Добрый день. Суть в том, чтобы при обновлении страницы, на фоне отображалось случайное видео из списка, который я укажу. Код: ...

Загрузка рандомного файла в баннер
Приветствую. Помогите советом, есть баннер. Нужно рандомно загружать гифки в него при обновлении страницы, что имеем <div...

Считывание рандомного слова из файла
Доброй ночи, форумчане. Я обучаюсь программированию С++ через программирования игр. У меня появилась идея: хочу чтобы компьютер выводил на...

Запуск бата в локальной директории
Есть папка "X". В ней есть папка "Y". В папке "Y" находиться файл 1.bat; Нужно, чтобы из папки "Х", в которой будет лежать...

Запуск скрипта из любой директории
Добрый день, господа. Такая ситуация: Есть скрипт, которым я хочу раскрашивать вывод в консоли. Запускается примерно так: python...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru