Как сделать так, чтобы сценарий происходил в пакетном скрипте - PullRequest
0 голосов
/ 22 января 2019
@echo off

start COMMAND_ONE

for /f "tokens=1-6 delims=," %%i in ('type file1.txt') do (
  start COMMAND_TWO with arguments as %%i to %%n
)

for /f "tokens=1-6 delims=," %%i in ('type file2.txt') do (
  COMMAND_TWO with arguments as %%i to %%n
)

for /f "tokens=1-6 delims=," %%i in ('type file3.txt') do (
  start command_two with arguments as %%i to %%n
)

for /f "tokens=1-6 delims=," %%i in ('type file4.txt') do (
  start COMMAND_TWO with arguments as %%i to %%n
)

pause

Суть в том, что я хочу, чтобы COMMAND_ONE выполнялся первым, а после того, как он завершился, я хочу, чтобы циклы выполнялись одновременно, и только одно окно cmd должно быть открыто, предоставляя статус, такой как ITERATION_1 OF LOOP_1 завершен и ITERATION_2 OFLOOP_3 завершен и так далее ...

Или просто одна строка ВСЕ ЦИКЛЫ ЗАВЕРШЕНЫ в конце всех циклов, завершенных в одном окне cmd.

1 Ответ

0 голосов
/ 22 января 2019

Возможно, вы могли бы просто выполнить что-то вроде этого:

@echo off
start "" /b /wait COMMAND_ONE
set "files=file1.txt file2.txt file3.txt file4.txt"

for %%a in (%files%) do (
  for /f "tokens=1,* delims=," %%i in (%%a) do (
  start "" /b /wait COMMAND_TWO with arguments as %%i to %%n
 )
)

/b просто запускает команду без нового окна, в то время как /wait будет ждать завершения команды / программы, прежде чем запускать следующее.

Итак, команды объясняются в следующем порядке:

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

Нам также не нужно использовать tokens=1-6, так как tokens=1,* - лучший вариант.С cmd.exe см .:

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