Войти

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


la15
27-03-2011, 11:36
Нужен bat файл который открывает программу несколько раз одновременно. Что то вроде for

kiripanda
27-03-2011, 12:26
А сам for не подходит?

megaloman
27-03-2011, 13:30
Запустим одновременно 10 раз калькуляторFOR /L %%i IN (1,1,10) DO Start " " /D"%SystemRoot%\System32" "calc.exe"
Кавычки здесь обязательны, если в пути или имени файлов есть пробелы. В частности, здесь без них можно обойтись

Решение уточнено после замечания Gora

gora
28-03-2011, 10:21
Запустим одновременно 10 раз калькулятор »
Ваш вариант запускает 10 раз не калькулятор, а CMD. В заголовке каждого консольного окна написано calc.exe, а сам калькулятор не запускается ни разу. Это происходит из-за того, что команда Start первый текст в кавычках (здесь кавычки в ключе /D не учитываются, ибо это принадлежность самого ключа) она рассматривает как заголовок окна. Правильно писать нужно так:FOR /L %%i IN (1,1,10) DO Start "" "calc.exe" Здесь первые кавычки задают пустой заголовок окна, а калькулятор стартует и без указания пути, т.к., путь к нему присутствует в переменной %Path% в системе по умолчанию.

megaloman
28-03-2011, 11:07
gora, Я действовал в соответствии c хелпом Start /?, где параметр ["заголовок"] не обязателен. Ответ писал на домашнем компьютере. И там БАТНИК РАБОТАЛ!!! На рабочем компе, увы, всё как Вы и написали. Но Ваш вариант не вполне приемлем, так как он годится только если программа может быть найдена системой по Path, то есть когда не надо (не обязательно) указывать путь к исполнимому файлу. Путём проб выяснил, что работает вариантFOR /L %%i IN (1,1,10) DO Start " " /D"%SystemRoot%\System32" "calc.exe"

gora
28-03-2011, 11:35
Путём проб выяснил, что работает вариант »
Конечно работает, но можно указать путь прямо в команде:FOR /L %%i IN (1,1,10) DO Start "" "%SystemRoot%\System32\calc.exe"или так, если этого пути нет в %Path% :FOR /L %%i IN (1,1,10) DO Start "" "%ProgramFiles%\7-Zip\7zFM.exe" действовал в соответствии c хелпом Start /?. »
Внимательно читаем:Запуск указанной программы или команды в отдельном окне.

START ["заголовок"] [/Dпуть] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME| /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B]
[команда/программа] [параметры]

"заголовок" Заголовок окна.
... и видим, что заголовок в кавычках должен быть первым, что будет заключено в кавычки в команде Start. И даже если Вы написали в кавычках команду, а заголовок забыли написать, то Start будет считать это заголовком, а не командой.И там БАТНИК РАБОТАЛ!!! »Возможно у Вас дома при тестах calc.exe был без кавычек, но Вы же сами убедились:
На рабочем компе, увы, всё как Вы и написали. »

megaloman
28-03-2011, 13:42
Внимательно читаем: ["заголовок"] - необязательный параметр, так как в квадратных скобках. [/Dпуть]- как понимаю, после ключа я волен писать путь, в том числе и в кавычках. Написать сразу "%SystemRoot%\System32\calc.exe" можно в этом частном случае. Но, как я понимаю (проверил) , указание явно рабочего каталога эквивалентно выполнению команды CD /D для указанного пути. А запустить файл по указанному пути и из рабочего каталога - существенная разница. Для примера, вот два варианта запуска:

FOR /L %%i IN (1,1,1) DO Start " " /D"G:\GAMES\PENTIX" "PENTIX.EXE"
FOR /L %%i IN (1,1,1) DO Start " " "G:\GAMES\PENTIX\PENTIX.EXE"

В этой игрушке в отдельном файле PENTIX.res хранится счет игры.
В первом случае, счет (PENTIX.res) берётся из рабочего каталога G:\GAMES\PENTIX
Во втором случае - PENTIX.res создаётся в каталоге, откуда запущен батник.
В общем случае программе из рабочего каталога могут понадобиться разнообразные файлы, и неуказание рабочего каталога приведёт к её неработоспособности. В этом смысле калькулятор - увы, не очень удачный пример.

gora
28-03-2011, 15:01
Внимательно читаем: ["заголовок"] - необязательный параметр, »
Я не могу отвечать за все баги M$, Вам лучше обратится к ним и указать на эту несуразицу. Для себя я уже это решил и всегда ставлю пустые кавычки ("") после команды Start, дабы не наступать на эти грабли.указание явно рабочего каталога эквивалентно выполнению команды CD /D для указанного пути. »
В постановке задачи не ни слова о смене рабочего каталога. Можно привести пример и обратных (нежелательных) последствий такой смены.
Явно менять каталог не просят - не надо этого делать, ибо "Лучшее - враг хорошего" ( (С) немецкая поговорка) ИМХО.

kiripanda
28-03-2011, 17:21
Внимательно читаем: ["заголовок"] - необязательный параметр, так как в квадратных скобках. »
Так и есть. Например
FOR /L %%i IN (1,1,10) DO Start calc.exe
отлично работает без заголовка.
НО если в параметрах появляются кавычки, то считается что первые из них содержат заголовок

djleks
20-10-2011, 02:37
А как бы это так сделать, чтобы программа запускалась, например, 5 раз и с паузой 5 секунд? Помогите!!! Очень надо!!!

Anonymоus
20-10-2011, 03:59
djleks, можно модифицировать код товарища megaloman, добавив к нему вот такую задержку приблизительно на пять секунд:


For /L %%i In (1,1,5) Do (
Start " " /D"%SystemRoot%\System32" "calc.exe"
Ping -n 5 127.0.0.1>nul
)




© OSzone.net 2001-2012