Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Запуск несколько раз (http://forum.oszone.net/showthread.php?t=203154)

la15 27-03-2011 11:36 1644858

Запуск несколько раз
 
Нужен bat файл который открывает программу несколько раз одновременно. Что то вроде for

kiripanda 27-03-2011 12:26 1644880

А сам for не подходит?

megaloman 27-03-2011 13:30 1644913

Запустим одновременно 10 раз калькулятор
Код:

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

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

gora 28-03-2011 10:21 1645420

Цитата:

Цитата megaloman
Запустим одновременно 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 1645457

gora, Я действовал в соответствии c хелпом Start /?, где параметр ["заголовок"] не обязателен. Ответ писал на домашнем компьютере. И там БАТНИК РАБОТАЛ!!! На рабочем компе, увы, всё как Вы и написали. Но Ваш вариант не вполне приемлем, так как он годится только если программа может быть найдена системой по Path, то есть когда не надо (не обязательно) указывать путь к исполнимому файлу. Путём проб выяснил, что работает вариант
Код:

FOR /L %%i IN (1,1,10) DO Start " " /D"%SystemRoot%\System32" "calc.exe"

gora 28-03-2011 11:35 1645482

Цитата:

Цитата megaloman
Путём проб выяснил, что работает вариант »

Конечно работает, но можно указать путь прямо в команде:
Код:

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

Цитата megaloman
действовал в соответствии c хелпом Start /?. »

Внимательно читаем:
Цитата:

Запуск указанной программы или команды в отдельном окне.

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

"заголовок" Заголовок окна.
...
и видим, что заголовок в кавычках должен быть первым, что будет заключено в кавычки в команде Start. И даже если Вы написали в кавычках команду, а заголовок забыли написать, то Start будет считать это заголовком, а не командой.
Цитата:

Цитата megaloman
И там БАТНИК РАБОТАЛ!!! »

Возможно у Вас дома при тестах calc.exe был без кавычек, но Вы же сами убедились:
Цитата:

Цитата megaloman
На рабочем компе, увы, всё как Вы и написали. »


megaloman 28-03-2011 13:42 1645589

Внимательно читаем: ["заголовок"] - необязательный параметр, так как в квадратных скобках. [/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 1645649

Цитата:

Цитата megaloman
Внимательно читаем: ["заголовок"] - необязательный параметр, »

Я не могу отвечать за все баги M$, Вам лучше обратится к ним и указать на эту несуразицу. Для себя я уже это решил и всегда ставлю пустые кавычки ("") после команды Start, дабы не наступать на эти грабли.
Цитата:

Цитата megaloman
указание явно рабочего каталога эквивалентно выполнению команды CD /D для указанного пути. »

В постановке задачи не ни слова о смене рабочего каталога. Можно привести пример и обратных (нежелательных) последствий такой смены.
Явно менять каталог не просят - не надо этого делать, ибо "Лучшее - враг хорошего" ( (С) немецкая поговорка) ИМХО.

kiripanda 28-03-2011 17:21 1645774

Цитата:

Цитата megaloman
Внимательно читаем: ["заголовок"] - необязательный параметр, так как в квадратных скобках. »

Так и есть. Например
Код:

FOR /L %%i IN (1,1,10) DO Start calc.exe
отлично работает без заголовка.
НО если в параметрах появляются кавычки, то считается что первые из них содержат заголовок

djleks 20-10-2011 02:37 1777469

А как бы это так сделать, чтобы программа запускалась, например, 5 раз и с паузой 5 секунд? Помогите!!! Очень надо!!!

Anonymоus 20-10-2011 03:59 1777477

djleks, можно модифицировать код товарища megaloman, добавив к нему вот такую задержку приблизительно на пять секунд:

Код:

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



Время: 14:12.

Время: 14:12.
© OSzone.net 2001-