Пакетная команда, конкретный порядок выполнения и несколько команд

Я пытаюсь выполнить несколько пакетных команд в определенном порядке.
После запуска первых 4 команд конец каждой команды должен вызвать запуск другой.

Образец:
После завершения команды » ExportU1 «должна запуститься команда» DeleteU1″, а затем»ImportU1″.

Как это сделать и / или есть ли более эффективный способ вызова каждой команды?

Мой текущий код:

C:
cd C:Program Files (x86)salesforce.comData Loaderbin
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" ImportDebitor
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" ExportU1
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" ExportU2
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" ExportU3
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" ImportKF
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" ImportAPSO
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" ImportAPGF
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" DeleteU1
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" DeleteU2
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" DeleteU3
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" ImportU1
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" ImportU2
start process.bat "C:Program Files (x86)salesforce.comData LoaderSchnittstelle" ImportU3
stop

3 ответа

  1. Чтобы дождаться завершения процесса, используйте start /wait.

    Как вы просите более эффективный способ:

    set "commands=ImportDebitor ExportU1 ExportU2 ExportU3 ImportKF ImportAPSO ImportAPGF DeleteU1 DeleteU2 DeleteU3 ImportU1 ImportU2 ImportU3"
    for  %%a in (%commands%) do start /wait process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" %%a
    

    Редактировать:

    set "command=process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle""
    for %%a in (Delete1, ImportDebitor) do start "Parallel-1" %command% %%a
    :wait1
     timeout 1 >nul
     tasklist  /fi "Windowtitle eq Parallel-1" |find "exe" && goto :wait1
    start /wait "ImportU1" %command% ImportU1
    ...
    

    Это запускает первые два процесса параллельно, ждет завершения обоих из них перед запуском третьего (и ждет его завершения)

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

    Если вы хотите запустить серию пакетных процессов последовательно, просто вызовите их последовательно.

    cd /d "C:\Program Files (x86)\salesforce.com\Data Loader\bin"
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ImportDebitor
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ExportU1
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ExportU2
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ExportU3
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ImportKF
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ImportAPSO
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ImportAPGF
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" DeleteU1
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" DeleteU2
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" DeleteU3
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ImportU1
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ImportU2
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ImportU3
    exit /b
    
  3. С помощью этого метода можно выполнить ряд процессов, которые зависят друг от друга сложным образом:

    @echo off
    
    C:\
    cd "C:\Program Files (x86)\salesforce.com\Data Loader\bin"
    
    rem Set indicator of "ImportDebitor active"
    echo X > ID.run
    start process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" ImportDebitor ^& del ID.run
    
    start parallel.bat ExportU1 WaitID DeleteU1 ImportU1
    start parallel.bat ExportU2 WaitID DeleteU2 ImportU2
    start parallel.bat ExportU3 WaitID DeleteU3 ImportU3
    

    Это параллель.летучая мышь:

    @echo off
    
    :nextArg
    if "%1" equ "" goto :EOF
    
    if %1 neq WaitID goto nextProc
    :waitID
    ping -n 4 localhost > NUL
    if exist ID.run goto waitID
    shift
    goto nextArg
    
    :nextProc
    call process.bat "C:\Program Files (x86)\salesforce.com\Data Loader\Schnittstelle" %1
    shift
    goto nextArg
    

    В этом коде ImportDebitorвыполняется параллельно с ExportU1ExportU2иExportU3). Когда ExportU1заканчивается, он проверяет, что ExportDebitorзакончилось, чтобы выполнитьDeleteU1, и после этого он запускается ImportU1. То же самое управление выполняется с соответствующими процессами «U2» и «U3».

    Остальные процессы (ImportKF,…APSO and …APGF) может быть также введен в эту схему аналогичным образом.