Как сделать пошаговый запуск .exe файлов с помощью .bat-скрипта - PullRequest
0 голосов
/ 17 июня 2009

У меня есть структура каталогов:

DIR
|-component_name
  |-source
  |-setup.exe
|-another_component_name
  |-source
  |-setup.exe
|-yet_another_component_name
  |-source
  |-setup.exe

and so on...

В каждом каталоге, таком как "component_name", у меня есть setup.exe файл, который устанавливает текущий компонент в компонент палитры в Delphi. Мне нужно создать DIR/setup.bat файл, который будет запускать по очереди setup.exe в каждом каталоге компонентов в DIR.

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 17 июня 2009

Я предполагаю, что когда вы говорите «по очереди», вы имеете в виду «один за другим» (то есть выполните первый файл setup.exe, дайте ему завершиться, выполните второй файл setup.exe, дайте ему завершиться и т. Д. ).

Если setup.exe на основе консоли , то вы можете просто позвонить .EXE напрямую. Каждый файл setup.exe будет прикреплен к окну консоли .BAT-файла, таким образом блокируя его выполнение до завершения setup.exe. Аналогично примеру цикла for, заданному Bubbafat :

for /f %%i in ('dir /b /s setup.exe') do %%i

Однако, если setup.exe на основе графического интерфейса , вам придется использовать команду CALL. Это приведет к тому, что файл .BAT будет ожидать завершения вызываемого процесса, прежде чем выполнять какие-либо другие команды:

for /f %%i in ('dir /b /s setup.exe') do call %%i

Теперь, если я неправильно понял вас и ваши EXE-файлы основаны на консоли, и вы хотите выполнить их все одновременно, не дожидаясь завершения каждого из них по очереди, тогда вы можете использовать команду START. Это откроет новое окно консоли для каждого EXE.

for /f %%i in ('dir /b /s setup.exe') do start %%i

NB: изменен цикл типа "for / r" на "for / f", поскольку он будет возвращать только существующие пути (в отличие от "for / r", который генерирует пути, которые могут не существовать).

1 голос
/ 17 июня 2009

пример:

for /f %%i in ('dir /s /b setup.exe') do (
%%i
)
0 голосов
/ 17 июня 2009

Используйте это:

for /r %i in (setup.exe) do %i

(или, если вы встраиваете его в файл .bat, не забудьте удвоить знаки%)

0 голосов
/ 17 июня 2009

Я думаю, что вы спрашиваете: «Как мне запустить каждый setup.exe в моем дереве каталогов?».

Если список известен заранее, вы можете просто создать командный файл, который запускает программы одинза другим.Например,

component_name\setup.exe
another_component_name\setup.exe
yet_another_component_name\setup.exe

Но если список не является статичным, и порядок их выполнения не важен, то вы можете использовать цикл for в пакетном файле, например:

for /F %i in ('dir /B /S *.log') do %i

Чтобы просмотреть, что это будет делать, добавьте «echo» перед последним «% i», например:

for /F %i in ('dir /B /S *.log') do echo %i

Если это не то, что вы имели в виду, уточните, что вы спрашиваете, так как это не ясно.

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