PDA

Показать полную графическую версию : [решено] Запуск программ из батника


akrav
03-04-2008, 23:51
Обычно запуск программ из батника выглядит как строка: “c:\program files\example.exe”
А как быть, если нужно запустить произвольный exe-файл из нужной папки?
Вариант “c:\program files\*.exe” не проходит…

yurfed
04-04-2008, 00:09
akrav, это типа *******.bat имя. расширение ? Так?
Задачи на bat-файлах (http://forum.ru-board.com/topic.cgi?forum=5&topic=4582&start=0)

Gerdewski
04-04-2008, 10:04
Вариант “c:\program files\*.exe” не проходит… »
Это конечно не подойдет.
И как понимать запустить произвольный exe-файл »?
Первый попавшийся?
Здесь, мне кажется, лучше пользоваться средствами vbs.

akrav
04-04-2008, 14:22
В известной папке находиться один exe-ник. Имя этого файла периодически меняется. Поэтому чтобы не переправлять батник, желательно написать строку для самого общего варианта, т.е. для *.exe.

R0iZ
04-04-2008, 14:42
Имхо, простым батником здесь не обойтись
лучше пользоваться средствами vbs.

Petya V4sechkin
04-04-2008, 14:42
akrav, обычным циклом:
For %%I In ("E:\13\*.exe") Do %%I

Admiral
04-04-2008, 14:52
Если ехе-файл один подойдёт и код
dir/B *.exe > 1.bat
start 1.bat
есть над чем поработать, например избавится от необходимости писать файл 1.bat

Wens
06-04-2009, 19:37
Здравствуйте. К сожилению не хватает знаний чтобы немного доделать эту команду For %%I In ("E:\13\*.exe") Do %%I , она работает, но не до конца, после выполнения батником в ХР, открывается всегда один и тот же экзэшник, после его закрытия открывается один и тотже следующий и т. д. , то последывательность открытия всегда одинаковая. Если не отнимет много времени подскажите плз как доделать команду чтобы выбор exe был чисто случайным?

semiono
07-04-2009, 06:21
@pause
For %%I In ("C:\~\system32\*.exe") Do %%I & Exit
@pause
Кажись так, но я не шарю :)
Паузы после теста можно стереть.

она работает, но не до конца, »
как раз таки она работает до конца :)

Wens
07-04-2009, 21:27
Да нет же, я говорю про случайный выбор. Именно случайный выбор. Экзешники включаются по очереди каждый после закрытия предыдущиго, но последывательность всегда одна и таже. А интересно как сделать чтобы выбор первого включающигося экзешника был случайный? Может как то типа "выключить ехе" - "выключить ехе" и так на время от 2 секунд до 5 путем применения ping -n (2-5?) localhost , но тогда как сделать чтобы выбор количества пингов был случайным? Т.е. пока cmd пингует идет процесс включения - выключения экзэшников, прекращение пинга и есть выбор ехе в этот момент открытого, но как тогда сделать произвольное кол-во пингов? Может кто знает? Хотя мне подойдет и скрипт vbs, для случайного выбора файла, только покароче,может кто знает?

Intexid
01-05-2009, 04:13
Wens,
Да нет же, я говорю про случайный выбор. Именно случайный выбор.
@echo off
setlocal enabledelayedexpansion
:randomize
for %%i in ("<путь к экзешникам>\*.exe") do (
set current!random:~-1!=%%i
)
for /l %%j in (0,1,9) do (
if defined current%%j (
"!current%%j!"
)
)
goto randomize

процессы генерируются непрерывно, так что если будешь документы им открывать, используй start /wait

Wens
03-05-2009, 18:18
Intexid спасибо за помощь, генерация вроде действительно идет, но экзешники не открываются, как ее остановить? Никакие дописанные снизу команды не действуют. Куда и что надо дописать?

Intexid
04-05-2009, 13:16
Wens
экзешники не открываются
попробуем запускать их start'ом
как ее остановить
пауза или таймер до выхода из цикла
@echo off
setlocal enabledelayedexpansion
:randomize
for %%i in ("<путь к экзешникам>\*.exe") do (
set current!random:~-1!=%%i
)
for /l %%j in (0,1,9) do (
if defined current%%j (
start "!current%%j!"
)
cls
pause
)
goto randomize
если exe'шники будут вести себя не так как ожидается, скажи как именно,
а продолжаться все это безумие будет, только пока удерживаешь любую клафишу,
можно ограничить количество запусков, или частоту, или задержку вставить

NiOl
04-05-2009, 19:20
Есть переменная "окружения" %random% - выдает случайное число в пределах от 0 и до 32767

1. Если кол-во экзешников строго определено, то заранее высчитав "вес" вероятности на запуск, укладываемся в одну строчку:
(предположим, что экзешников в каталоге 10, тогда вероятность примерно равна 3276 из 32767)

for %%f in (MyFolder\*.exe) do if /I 3276 LSS %random% start /wait %%f

2. Если кол-во экзешников "плавает", то нужно в первом цикле пробежаться и подсчитать их кол-во, затем подсчитать вероятность, а третью строку оставить почти в примере выше, но с заменой уровня вероятности на переменную

gora
05-05-2009, 11:31
start "!current%%j!" »
Так запуск через start писать нельзя! Правильно будет так:start "" "!current%%j!" Первую запись в кавычках start считает заголовком окна и, в вашем варианте, не запустит сам файл, а выведет новое консольное окно с заголовком состоящим из названия этого файла.

Intexid
05-05-2009, 12:09
gora,
Первую запись в кавычках start считает заголовком окна

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

Wens
27-05-2009, 00:19
Ребят, извините, но я не могу разобраться в нагромождении этих команд. @echo off, cls, pause я отлично понимаю, остальное весьма смутно. Путь к экзешникам я указываю, и начинается процесс генерации, но остановить то его как? Как довести до ума вариант Intexida? Где и что надо дописать? Если start или start /wait , то в каком месте их прописывать? Вариант от NiOLa тоже не работает, пробовал с десятью экзешниками.




© OSzone.net 2001-2012