batch - paralleles Abarbeiten

Dieses Thema batch - paralleles Abarbeiten im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Kasimee, 19. Mai 2005.

Thema: batch - paralleles Abarbeiten Hallo, ich möchte in einer .bat-Datei mehrere Prozesse gleichzeitig ablaufen lassen. Wenn diese Prozesse fertig...

  1. Hallo,

    ich möchte in einer .bat-Datei mehrere Prozesse gleichzeitig ablaufen lassen. Wenn diese Prozesse fertig sind, sollen die nächsten angestoßen werden.

    Meine Datei heißt beispielsweise aufruf.bat. In dieser Datei werden andere .bat-dateien aufgerufen. z.B: Erst möchte ich test1.bat, test2.bat und test3.bat gleichzeitig starten, wenn diese 3 Prozesse fertig sind, sollen beispiel1.bat und beispiel2.bat gleichzeitig gestartet werden.

    Ist das möglich, und wenn ja, wie?

    Vielen dank schonmal für Antworten!

    mfg

    Agathe
     
  2. hp
    hp
    das ist schon ein wiederspruch in sich: batch heißt ja bekanntlich stapel, da wird ein teil nach dem anderen abgearbeitet ... was du versuchen kannst: die anderen batch dateien via start aus der 1. batch zu starten, dann werden die batchs sofort hinterinander gestartet, oder du läßt die batch-dateien via taskplaner alle zur selben zeit starten. wenn die batch dateien von einander unabhängig sind ist das meiner meinung nach die beste lösung ...

    greetz

    hugo
     
  3. hallo,

    vielen dank für die Antwort, mein Problem dabei ist, woher weiß ich, wann die Prozesse fertig sind, damit ich den zweiten Block starten kann?
     
  4. hp
    hp
    tja, das ist jetzt die frage ... da solltest du ja besser bescheid wissen als ich, da ich die programme bzw. befehle die du ausführen willst nicht kenne. generell kannst du aus einer batch via call eine andere batch aufrufen, die dann wenn sie abgearbeitet wurde wieder in die ursprungsbatch zurückkehrt. also bau dir eine ober-batch in der du die anderen batch dateien via call aufrufst, wenn die dann fertig sind macht die oberbatch mit dem nächsten eintrag weiter.

    so könnte der oberaufruf sein (z.b. start.bat genannt)

    @echo off
    call aufruf.bat
    start beispiel1.bat
    start beispiel2.bat

    die aufruf.bat sieht dann so aus

    @echo off
    start test1.bat
    start test2.bat
    start test3.bat

    dann fällt aber das parallele starten via taskplaner weg, der zeitliche unterschied beim starten via start ist aber minimal ...

    greetz

    hugo
     
  5. Ich habe das jetzt teilweise mit vbscript gelöst.

    mein vbs-skript ruft einzelne Dateien (*.bat) auf, die dann einen call-Aufruf machen. Vor dem call-aufruf wird eine Datei geschrieben, danach wird sie wieder gelöscht. So kann ich prüfen, ob der Prozess noch läuft.

    Der code von vbs sieht dann so aus:

    Code:
    set wshshell = CreateObject(WScript.Shell)
    dim fso
    set fso = CreateObject(Scripting.FileSystemObject)
    
    wshshell.Run call01.bat 
    wshshell.Run call02.bat
    
    'solange warten, bis die Lock-dateien weg sind
    wscript.sleep 3000->warten, damit das script auch Zeit hat, die Dateien anzulegen
    do while(fso.FileExists(lock1.lock) or fso.FileExists(lock2.lock))
    wscript.sleep 3000
    loop
    
    wshshell.Run call03.bat
    wshshell.Run call04.bat
    wshshell.Run call05.bat
    wshshell.Run call06.bat
    
    'solange warten, bis die Lock-dateien weg sind
    wscript.sleep 3000->warten, damit das script auch Zeit hat, die Dateien anzulegen
    do while(fso.FileExists(lock3.lock) or fso.FileExists(lock4.lock) or fso.FileExists(lock5.lock) or fso.FileExists(lock6.lock))
    wscript.sleep 3000
    loop
    
    wshshell.Run call07.bat
    wshshell.Run call08.bat
    wshshell.Run call09.bat
    wshshell.Run call10.bat
    
    'solange warten, bis die Lock-dateien weg sind
    wscript.sleep 3000->warten, damit das script auch Zeit hat, die Dateien anzulegen
    do while(fso.FileExists(lock7.lock) or fso.FileExists(lock8.lock) or fso.FileExists(lock9.lock) or fso.FileExists(lock10.lock))
    wscript.sleep 3000
    loop
    
    wshshell.Run call11.bat
    wshshell.Run call12.bat
    
    'solange warten, bis die Lock-dateien weg sind
    wscript.sleep 3000->warten, damit das script auch Zeit hat, die Dateien anzulegen
    do while(fso.FileExists(lock11.lock) or fso.FileExists(lock12.lock))
    wscript.sleep 3000
    loop
    
    eine call*.bat sieht so aus:

    Code:
    lock7 > lock7.lock
    call beispiel.bat
    del lock7.lock
    
    Das ist noch nicht optimal, aber es funktioniert, im Moment arbeite ich noch daran, die Befehle über Parameter zu übergeben, damit ich nicht so viele Dateien habe.
     
Die Seite wird geladen...

batch - paralleles Abarbeiten - Ähnliche Themen

Forum Datum
Hilfe zu einem einfachen Batchjob gesucht Software: Empfehlungen, Gesuche & Problemlösungen 22. Mai 2016
Dienstneustart in Aufgabe mit Protokoll unter R2008 (Batch) Windows Server-Systeme 5. März 2015
Pfade in Batchdatei Windows 7 Forum 18. Feb. 2015
Dateigröße auslesen mit batch programmierung Software: Empfehlungen, Gesuche & Problemlösungen 6. Feb. 2015
Wie Monitorausgabe in Batch Variable einbinden ? Linux & Andere 10. Jan. 2015