Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datei in ganz bestimmten Ordner suchen und ausführen

Frage Entwicklung Batch & Shell

Mitglied: ChocoLoco

ChocoLoco (Level 1) - Jetzt verbinden

11.07.2014, aktualisiert 13.07.2014, 1555 Aufrufe, 17 Kommentare

Hallo erstmal an alle,

da ich mich seit kurzem mit Batchprogrammierung beschäftige und bei euch schon sehr viele hervorragende Hinweise zu anderen Problemen dieser Art gefunden habe würde ich jetzt gerne meine eigene Frage stellen. Ich habe ca 100 Ordner mit einer ganz bestimmten, immer gleichen Unterordnerstruktur. Jetzt muss ich mehrere Programme nacheinander ausführen. Ein Beispiel, dass ich gelöst habe:
01.
@ECHO OFF 
02.
 
03.
for /r %BASE_DIR% %%i in (*.frd *.dat *.sta 2014-07-04_turbine_blade_Mesh.inp) do ( 
04.
del %%i 
05.
echo %%i 
06.
)
Wie ihr sicherlich gleich erkennt, wird im %BASE_DIR% nach (*.frd *.dat *.sta 2014-07-04_turbine_blade_Mesh.inp) gesucht und diese anschließend gelöscht.


Bei einem zweiten Problem schaffe ich es mit dem gleichen Vorgehen bestimmte Dateien mit einem Programm auszuführen.
01.
@ECHO OFF 
02.
 
03.
for /r %BASE_DIR% %%i in (2014-07-04_turbine_blade) do ( 
04.
cd RUN_*\Output 
05.
ccx %%~fi 
06.
echo %%i 
07.
echo %%~fi 
08.
)
Bei beiden Beispielen war es allerdings egal, ob der Pfad richtig war, denn bei einem falschen Pfad wurde dieser einfach nicht ausgeführt. Ganz nebenbei weiß ich nicht, warum ich dieses cd RUN_*\Output brauche, aber ohne dem gehts nicht.

Nun habe ich aber das Problem, dass ich bei einem Programm eine Fehlermeldung bekomme, wenn der Pfad nicht genau stimmt, d.h. ich darf nur in Ordnern suchen, die die Datei auch enthalten! Hier im Forum bin ich auch auf ähnliche Dinge gestoßen, aber leider reicht mein Batchwissen nicht aus, um sie auf meinen Fall umzusetzen.
Folgende Ordnerstruktur
%BASE_DIR%
- RUN_1
-- Input
-- Output
-- Project
- RUN_2
-- Input
-- Output
-- Project
usw.

Die gesuchte Datei befindet sich immer in -- Project. Leider funktioniert mein Ansatz nicht (war nicht mein einziger):
01.
for /r %BASE_DIR%\RUN_*\Project %%i in (Project.sls) do ( 
02.
cd RUN_1\Project 
03.
START CMD /wait /c %SIMLAB_DIR%\SimLab.bat -auto %%~fi -nographics -nowait 
04.
)
Bin um jede Hilfe sehr dankbar.

Schöne Grüße
ChocoLoco
Mitglied: rubberman
12.07.2014, aktualisiert um 16:23 Uhr
Hallo ChocoLoco, willkommen im Forum.

Das Problem ist einfach erklärt: Es wird nur dann nach einer Datei gesucht, wenn in der Klammer ein Wildcard Zeichen (* oder ?) zu finden ist. Anderenfalls wird der Dateiname einfach an jedes gefundene Verzeichnis angehängt. Wildcards im Pfad funktionieren nicht, aber das hast du bereits herausgefunden.

Es mag komisch aussehen, aber wenn du ein Wildcard an deinen Dateinamen anhängst, sollte es funktionieren.
Ungetestet:
01.
for /r "%BASE_DIR%" %%i in (Project.sls*) do ( 
02.
  start "" /d "%%~dpi" /wait CMD /c "%SIMLAB_DIR%\SimLab.bat" -auto "%%~fi" -nographics -nowait 
03.
)
Option /d ändert das Arbeitsverzeichnis des aufgerufenen Programms.

Grüße
rubberman
Bitte warten ..
Mitglied: ChocoLoco
12.07.2014 um 01:58 Uhr
Hallo rubberman,

danke für deinen Hinweis. Leider funktioniert es so nicht. Wenn ich die Befehlszeile in die ursprüngliche Form bringe
START CMD /wait /c %SIMLAB_DIR%\SimLab.bat -auto %%~fi -nographics -nowait
dann haut es wieder hin, aber mit Fehlermeldungen. Mir ist auch nicht klar, was diese Zusätzlichen Parameter bedeuten. Vielleicht kannst du hierzu noch etwas sagen.

Bei meiner zweiten Lösung (siehe ersten Beitrag) würde ich auch gerne mit * arbeiten, aber dann wird die Endung angehängt. Das klappt mit dem Prgramm nicht, da ich den Dateinamen ohne Endung angeben muss und dieser dann automatisch von der exe hinzufügt wird, also quasi Dateiname.ENDUNG.ENDUNG (in meinem Fall wäre das 2014-07-04_turbine_blade.inp.inp).
Bitte warten ..
Mitglied: rubberman
12.07.2014, aktualisiert um 16:23 Uhr
Hallo ChocoLoco,

ganz kann ich dir noch nicht folgen.
Wenn ich die Befehlszeile in die ursprüngliche Form bringe
/wait gehört zum START Befehl und muss demnach vor CMD stehen.
Mir ist auch nicht klar, was diese Zusätzlichen Parameter bedeuten.
Welche? Zum /d habe ich etwas geschrieben.
Bei meiner zweiten Lösung (siehe ersten Beitrag) würde ich auch gerne mit * arbeiten, aber dann wird die Endung angehängt.
An der Stelle hast du mich endgültig verloren. Aber mal als Tipp: %%~dpni ergibt Laufwerk, Pfad und Dateiname von %%i (ohne Dateiendung).

Für Hilfe zu den einzelnen Befehlen, öffne ein CMD Fenster und führe
Befehl /?
aus. In deinem Fall FOR /? und START /?.

Grüße
rubberman
Bitte warten ..
Mitglied: ChocoLoco
12.07.2014, aktualisiert um 15:51 Uhr
Hallo rubberman,

es ist nicht ganz trivial, aber ich versuche mal, dass ganze Problem auf den Punkt zu bringen. Wie erwähnt habe ich folgende Ordnerstruktur:
%BASE_DIR%
- RUN_1
-- Input
-- Output
-- Project
- RUN_2
-- Input
-- Output
-- Project
usw.

Die genaue Anzahl der Ordner kenne ich nicht, das kann variieren, allerdings kenne ich den exakten Aufbau, der in jedem einzelnen RUN gleich ist. Des Weiteren weiß ich, wo genau die Dateien liegen, die ich mit den Programmen ansprechen will, d.h. ich müsste nicht immer die ganze Struktur durchsuchen, sondern es würde reichen sequentiell alle RUNs und die beinhalteten Dateien anzusprechen. Die pauschale Suche nach den Dateien in ALLEN Ordnern ist nur eine NOTLÖSUNG von mir, weil ich es nicht besser hinbekomme. Was ich errichen möchte:
Bsp:
RUN_1
Programm A:
1. Verwende DateiA in Ordner RUN_1\Output\DateiA und führe die Aktion aus
2. Verwende DateiA in Ordner RUN_1\Output\DateiA und führe die Aktion aus
3. usw. bis die letzte Aktion in dem RUN abgearbeitet ist.

Programm B:
1. Verwende DateiB in Ordner RUN_1\Project\DateiB und führe die Aktion aus
2. Verwende DateiA in Ordner RUN_1\Project\DateiA und führe die Aktion aus
3. usw. bis die letzte Aktion in dem RUN abgearbeitet ist.

Programm C:
usw.

RUN_2
Programm A:
1. Verwende DateiA in Ordner RUN_2\Output\DateiA und führe die Aktion aus
2. Verwende DateiA in Ordner RUN_2\Output\DateiA und führe die Aktion aus
3. usw. bis die letzte Aktion in dem RUN abgearbeitet ist.

Programm B:
1. Verwende DateiB in Ordner RUN_2\Project\DateiB und führe die Aktion aus
2. Verwende DateiA in Ordner RUN_2\Project\DateiA und führe die Aktion aus
3. usw. bis die letzte Aktion in dem RUN abgearbeitet ist.

Programm C:
usw.

Das Problem auf den Punkt gebracht: Jedes Programm soll nur auf die richtige Datei zugreifen, am liebsten ohne alle (unwichtigen) Ordner zu durchsuchen.

Schöne Grüße
ChocoLoco
Bitte warten ..
Mitglied: rubberman
LÖSUNG 12.07.2014, aktualisiert um 17:02 Uhr
Hallo ChocoLoco.

Teste:
01.
for /d %%i in ("%BASE_DIR%\Run_*") do ( 
02.
  if exist "%%~i\Project\Project.sls" ( 
03.
    echo "%%~i\Project\Project.sls" gefunden 
04.
    REM Hier wuerde deine START Zeile stehen ... 
05.
  ) else ( 
06.
    echo "%%~i\Project\Project.sls" NICHT gefunden 
07.
08.
)
Grüße
rubberman
Bitte warten ..
Mitglied: ChocoLoco
12.07.2014, aktualisiert um 16:53 Uhr
Vielen Dank, das sieht schon sehr gut aus! Leider bleibt die Fehlermeldung

Ganz soweit war ich, denke ich, gar nicht weg. Mein angepasster code lautet:
01.
@ECHO OFF 
02.
 
03.
for /d %%i in ("%BASE_DIR%\Run_*") do ( 
04.
  if exist "%%~i\Project\Project.sls" ( 
05.
    echo "%%~i\Project\Project.sls" gefunden 
06.
    REM Hier wuerde deine START Zeile stehen ... 
07.
    CMD /wait /c %SIMLAB_DIR%\SimLab.bat -auto "%%~i\Project\Project.sls" -nographics -nowait 
08.
  ) else ( 
09.
    echo "%%~i\Project\Project.sls" NICHT gefunden 
10.
11.
)
Das wait habe ich nach vorne gesetzt, so wie du es mir empfohlen hast.

Update: Sorry für das schnelle Update, aber ich habe gerade herausgefunden, dass die Fehlermeldung nichts mit der Batch zu tun hat.


PS: Kannst du mir sagen, wie ich Bilder hochladen und einbinden kann?
Bitte warten ..
Mitglied: rubberman
12.07.2014, aktualisiert um 16:56 Uhr
Hehe, also nochmal, ein /wait gibt es nicht für cmd (das passiert automatisch). Rausschmeißen! Die Variable %BASE_DIR% musst du natürlich auch am Anfang des Codes definieren.
Und wie genau lautet die Fehlermeldung?

Bilder hochladen? Findest du in der Hilfe.
Bitte warten ..
Mitglied: ChocoLoco
12.07.2014 um 17:02 Uhr
Um den ganzen Ablauf zu starten benutze ich eine MASTER.bat, dort sind auch die Variablen definiert:
01.
@ECHO ON 
02.
 
03.
REM Verzeichnisvariablen 
04.
set RUN_DIR_1=RUN_1 
05.
set RUN_DIR_2=RUN_2 
06.
set BASE_DIR=D:\00_Dipl_Turbine 
07.
set SIMLAB_DIR=D:\SimLab_130\ 
08.
 
09.
REM Vorherige Output Dateien löschen 
10.
call .\linkMASTER\01_linkMASTER_LOESCHEN_output.bat 
11.
 
12.
REM SimLab 
13.
call .\linkMASTER\02_linkMASTER_SimLab.bat
Bitte warten ..
Mitglied: ChocoLoco
12.07.2014 um 17:38 Uhr
Hey rubberman,

es scheint alles PERFEKT(!!!!!!) zu funktionieren. Nach mehreren Tagen intensiver Arbeit und deiner hervorragenden Hilfe!

Ganz herzlichen Dank!


Schöne Grüße
ChocoLoco

PS: Die Fehlermeldung ist von dem auszuführenden Programm erzeugt worden und hatte nichts mit der Bat-Datei zu tun. Nach einigen Neuinstallationen und Pfadanpassungen funktioniert jetzt auch das.
Bitte warten ..
Mitglied: ChocoLoco
12.07.2014 um 19:23 Uhr
Hallo nochmal,

es gibt doch noch eine Kleinigkeit. Das letzte Programm in der Kette greift auf Dateien zurück, die sich in Ordnern befinden, die sich ebenfalls ändern. Ich versuche es an einem Beispiel klar zu machen. Folgendes habe ich, dank Dir, ja bereits:
01.
for /d %%i in ("%BASE_DIR%\Run_*") do ( 
02.
  if exist "%BASE_DIR%\new_model.prt" ( 
03.
    cd %BASE_DIR% 
04.
    generate_evaluation_grid.exe new_model.prt Expression\Expression_1\profil_veraendert.exp 0.5 
05.
    MOVE "%BASE_DIR%\elemente_base.txt" "%%~i\Output" 
06.
    MOVE "%BASE_DIR%\elemente_mod.txt" "%%~i\Output" 
07.
    MOVE "%BASE_DIR%\fem1.fem" "%%~i\Output" 
08.
    MOVE "%BASE_DIR%\knoten_base.txt" "%%~i\Output" 
09.
    MOVE "%BASE_DIR%\knoten_mod.txt" "%%~i\Output" 
10.
  ) else ( 
11.
    echo "%BASE_DIR%\new_model.prt" NICHT gefunden 
12.
13.
)
Beachte Zeile 04.
01.
generate_evaluation_grid.exe new_model.prt Expression\Expression_1\profil_veraendert.exp 0.5
Das Programm generate_evaluation_grid.exe greift auf die Datei new_model.prt zu und variiert Parameter, die das Programm von Expression\Expression_1\profil_veraendert.exp bezieht.
Momentan verwendet das Programm für jeden Run Expression\Expression_1, tatsächlich soll sich die Zahl der Expression aber mit dem RUN erhöhen, d.h.
Run_1 --> Expression\Expression_1\profil_veraendert.exp
Run_2 --> Expression\Expression_2\profil_veraendert.exp
Run_3 --> Expression\Expression_3\profil_veraendert.exp
usw.

Kannst Du mir einen Hinweis geben wie ich das anpassen kann?


Schöne Grüße
ChocoLoco
Bitte warten ..
Mitglied: rubberman
LÖSUNG 13.07.2014, aktualisiert um 13:04 Uhr
Ups, gar nicht mitbekommen, dass hier noch was kam.
Um das hinzubekommen, musst du den Run_... Verzeichnisnamen am Unterstrich splitten. Ich versuch's mal ungetestet in den Browser zu schreiben.
Für Zeile 4 folgende Zeilen:
01.
    for /f "tokens=2 delims=_" %%j in ("%%~ni") do ( 
02.
      generate_evaluation_grid.exe new_model.prt Expression\Expression_%%j\profil_veraendert.exp 0.5 
03.
    )
Grüße
rubberman
Bitte warten ..
Mitglied: ChocoLoco
13.07.2014 um 13:16 Uhr
Also jetzt mal ungelogen, Du bist echt der Hit! Vielen Dank!!!
So sieht der Code aus und funktioniert wunderbar:
01.
for /d %%i in ("%BASE_DIR%\Run_*") do ( 
02.
  if exist "%BASE_DIR%\new_model.prt" ( 
03.
    for /f "tokens=2 delims=_" %%j in ("%%~ni") do ( 
04.
	cd %BASE_DIR%     
05.
        generate_evaluation_grid.exe new_model.prt Expression\Expression_%%j\profil_veraendert.exp 0.5 
06.
07.
    MOVE "%BASE_DIR%\elemente_base.txt" "%%~i\Output" 
08.
    MOVE "%BASE_DIR%\elemente_mod.txt" "%%~i\Output" 
09.
    MOVE "%BASE_DIR%\fem1.fem" "%%~i\Output" 
10.
    MOVE "%BASE_DIR%\knoten_base.txt" "%%~i\Output" 
11.
    MOVE "%BASE_DIR%\knoten_mod.txt" "%%~i\Output" 
12.
  ) else ( 
13.
    echo "%BASE_DIR%\new_model.prt" NICHT gefunden 
14.
15.
)
Durch meine Recherche dachte ich mir schon, dass ich hier mit "Delim" arbeiten muss, habe die Anwendung des Befehls aber nicht ganz verstanden. Dein Beispiel bringt gut Licht in die Sache, auch in die Anwendung und Verschachtelung des FOR Befehls.

Ohne Deine Hilfsbereitschaft zu sehr beanspruchen zu wollen hätte ich eine letzte Frage. Der ganze Ablauf funktioniert momentan einwandfrei, allerdings seriell. Bei mind. 100 Durchläufen, wobei eine Berechnung ca. 1std dauert, brauche ich etwa 1 Woche. Jetzt würde ich die Berechnung gerne parallelisieren, d.h. bei jedem Durchlauf ca. 4 Berechnungen gleichzeitig starten. Denkst Du, das ist möglich? Etwa so (wobei das nicht funktioniert):
01.
for /d %%i in ("%BASE_DIR%\Run_*") do ( 
02.
  if exist "%%~i\Output\2014-07-04_turbine_blade_Mesh.inp" ( 
03.
    cd "%%~i\Output" 
04.
    ccx "%%~i\Output\SOLVER_2014-07-04_turbine_blade" 
05.
    ccx "%%~i+1\Output\SOLVER_2014-07-04_turbine_blade" 
06.
    ccx "%%~i+2\Output\SOLVER_2014-07-04_turbine_blade" 
07.
    ccx "%%~i+3\Output\SOLVER_2014-07-04_turbine_blade" 
08.
  ) else ( 
09.
    echo "%%~i\Output\SOLVER_2014-07-04_turbine_blade.inp" NICHT gefunden 
10.
11.
)
Schöne Grüße
ChocoLoco
Bitte warten ..
Mitglied: rubberman
13.07.2014 um 14:33 Uhr
Um asynchron arbeiten zu können, benötigst du wieder den START Befehl.

Da das Ganze aber, wie du schreibst, trotzdem sehr viel Zeit in Anspruch nehmen wird, ist mir noch nicht klar wie du vorhast damit zu arbeiten. Willst du die Batchdatei nur einmal starten und sie läuft dann eben bis alle Dateien verarbeitet wurden? Oder willst du jeweils nachdem 4 Berechnungen durch sind die Batchdatei neu starten? Im letzteren Fall musst du mir sagen, woran zu erkennen ist, welche Berechnungen bereits erfolgt sind, damit nicht wieder bei Run_1 gestartet wird.

Grüße
rubberman
Bitte warten ..
Mitglied: ChocoLoco
13.07.2014, aktualisiert um 14:53 Uhr
Ich will meine Masterbatch nur einmal starten und danach soll die ganze Berechnung bis zum letzten RUN Ordner durchlaufen.
Hier der Aufbau meiner Masterdatei:
01.
@ECHO ON 
02.
 
03.
REM Verzeichnisvariablen 
04.
set BASE_DIR=D:\00_Dipl_Turbine\00_Berechnung 
05.
set SIMLAB_DIR=D:\SimLab_130\ 
06.
 
07.
REM -------------------------------------------- 
08.
REM Vorherige Output Dateien löschen 
09.
REM -------------------------------------------- 
10.
call .\linkMASTER\01_linkMASTER_Loeschen.bat 
11.
 
12.
REM -------------------------------------------- 
13.
REM SimLab 
14.
REM -------------------------------------------- 
15.
START call .\linkMASTER\02_linkMASTER_SimLab_seriell.bat 
16.
 
17.
REM -------------------------------------------- 
18.
REM Flächenbezeichnung --> einmalig!!! 
19.
REM -------------------------------------------- 
20.
REM -->AUSGABE<--: new_model.prt 
21.
START call .\linkMASTER\04_linkMASTER_Flaechenbezeichnung.bat 
22.
 
23.
REM -------------------------------------------- 
24.
REM CalculiX 
25.
REM -------------------------------------------- 
26.
call .\linkMASTER\03_linkMASTER_CalculiX_seriell.bat 
27.
:: > test.txt 2>&1 
28.
 
29.
REM -------------------------------------------- 
30.
REM Auswertungsnetz und verschieben der erzeugten Datein --> in jedem Shot!!!  
31.
REM -------------------------------------------- 
32.
REM -->AUSGABE<--: elemente_base.txt 
33.
REM -->AUSGABE<--: elemente_mod.txt 
34.
REM -->AUSGABE<--: fem1.fem 
35.
REM -->AUSGABE<--: knoten_base.txt 
36.
REM -->AUSGABE<--: knoten_mod.txt 
37.
call .\linkMASTER\05_linkMaster_Auswertungsnetz.bat
Zur Erklärung:
1. Da es vorkommen kann, dass bereits zuvor erstellte Dateien vorhanden sind lösche ich diese. Manche verwendeten Programme stürzen sonst ab, da sie nicht überspeichern können.
2. Bei den folgenden zwei Programmen arbeite ich mit START, da diese unabhängig voneinander ausgeführt werden können. Diese Programme erzeugen Dateien, die ich im späteren Verlauf noch brauche.
3. Jetzt kommen wir zu dem Teil "call .\linkMASTER\03_linkMASTER_CalculiX_seriell.bat". Hierbei werden ebenfalls Dateien erzeugt, die das folgende Programm benötigt. Momentan Arbeitet CalculiX (übrigens ein FEM Solver) eine Datei nach der anderen ab, greift dabei aber nur auf einen Kern zurück. Von diesen Dingern habe ich aber 8 Stück, d.h. ich könnte, Reserven eingerechnet, mal mit 4 simultanen Berechnungen arbeiten.
4. Der Rest der Batch soll hier nicht beachtet werden, der funktioniert gut.

UPDATE
Was mir gerade eingefallen ist. Könnte man nicht eine umgebenden FOR-Schleife benützen, wobei die innere For-Schleife immer 4 Rechnungen startet? Allerdings weiß ich dann nicht, wie der Zähler bei Rechnung 5, 9, 13 usw. erkennt, wo er starten soll.
Bitte warten ..
Mitglied: rubberman
LÖSUNG 13.07.2014, aktualisiert um 15:51 Uhr
Hmm. Wieder ungetestet (logischerweise):
01.
for /d %%i in ("%BASE_DIR%\Run_*") do ( 
02.
  if exist "%%~i\Output\2014-07-04_turbine_blade_Mesh.inp" ( 
03.
    set "runDir=%%~i" 
04.
    REM Subroutine aufrufen 
05.
    call :procRunDir 
06.
  ) else ( 
07.
    echo "%%~i\Output\SOLVER_2014-07-04_turbine_blade.inp" NICHT gefunden 
08.
09.
10.
 
11.
REM Batchdatei beenden (an dieser Stelle laufen aber noch 4 ccx.exe Prozesse weiter) 
12.
goto :eof 
13.
 
14.
 
15.
REM Subroutine 
16.
:procRunDir 
17.
cd "%runDir%\Output" 
18.
REM ccx.exe asynchron aufrufen 
19.
start "" ccx "%runDir%\Output\SOLVER_2014-07-04_turbine_blade" 
20.
 
21.
REM Warteschleife, solange mehr als 3 Instanzen von ccx.exe parallel laufen 
22.
:loop 
23.
for /f %%j in ('tasklist /nh /fi "imagename eq ccx.exe" ^| find /i /c "ccx.exe"') do ( 
24.
  if %%j gtr 3 (timeout /t 5 /nobreak >nul & goto loop) 
25.
26.
 
27.
REM Zum Aufruf der Subroutine in Zeile 5 zurückkehren 
28.
goto :eof
Beachte Zeile 11. Wenn die Batchdatei erst beendet werden darf, wenn alle ccx.exe Prozesse abgearbeitet sind, gehört an der Stelle noch eine Warteschleife rein. Weiß ich aber nicht.

Grüße
rubberman
Bitte warten ..
Mitglied: ChocoLoco
13.07.2014 um 15:54 Uhr
Hammer!!!!
Ohne von Dir getestet zu sein läuft das Programm einwandfrei. Ich kann Dir gar nicht genug danken!!!!! Das hätte ich in hundert Jahren nicht hinbekommen und spare mir jetzt TAGE(!!!) an Berechnungszeit. Vielen, vielen Dank!


Schöne Grüße und viel Spaß beim WM Finale
ChocoLoco
Bitte warten ..
Mitglied: rubberman
13.07.2014 um 16:14 Uhr
spare mir jetzt TAGE(!!!) an Berechnungszeit
Automation ist der Sinn von Batchscripten
Gern geschehen.

Schöne Grüße und viel Spaß beim WM Finale
Dito!
rubberman
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Datei in Ordner mit Batchdatei suchen und weiterverarbeiten (2)

Frage von MichaelWiggen zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...