[GELÖST] Externes Programm starten mit Arbeitsverzeichnis

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
OLLI_S
Beiträge: 65
Registriert: Di 17. Jan 2012, 20:55

[GELÖST] Externes Programm starten mit Arbeitsverzeichnis

Beitrag von OLLI_S »

Hallo,

ich habe auf C:\ in einem Verzeichnis, in dem von einer Java-Anwendung (nicht von mir entwickelt) mehrere Versionen liegen.
Jede Version der Anwendung hat ein separates Verzeichnis mit dem entsprechenden Kompilierungsdatum im Namen.
In jedem dieser Unterverzeichnisse liegt eine Start.bat Datei, mit der ich das Java-Programm starten kann.

Beispiel:
C:\Programm\2011.11.11_12-04-17\start.bat
C:\Programm\2011.11.30_09-00-35\start.bat

Ich habe ein Lazarus-Programm geschrieben, das diese verschiedenen Versionen verwaltet (Versionen löschen, schöner formatierte Anzeige der gefundenen Versionen, etc).
Unter anderem Starte ich auch die einzelnen Programme über folgende Methode:

Code: Alles auswählen

//------------------------------------------------------------------------------
// Lade eine externe Anwendnug
//------------------------------------------------------------------------------
function TfrmMainForm.LaunchApplication ( aCommandLine: string ): boolean;
 
var
  AProcess: TProcess;
 
begin
  AProcess := TProcess.Create ( nil );
  AProcess.CommandLine := aCommandLine;
  AProcess.Execute;
  AProcess.Free;
end;
Aufgerufen wird die Methode dann mit der entsprechenden Start.bat aus dem entsprechenden Verzeichnis (beispielsweise C:\Programm\2011.11.11_12-04-17\start.bat).
Das ganze funktioniert vom Aufruf her einwandfrei.

Jedoch gehen die Batch-Dateien (stammen nicht von mir) davon aus, dass sie aus dem entsprechenden Verzeichnis heraus gestartet werden.
Rufe ich also die start.bat aus dem Verzeichnis C:\Programm\2011.11.11_12-04-17\ auf, geht die Batch-Datei davon aus, dass ich bereits im Verzeichnis C:\Programm\2011.11.11_12-04-17\ bin.
Da ich das nicht bin, läuft die Batch-Datei auf einen Fehler.

Ich habe daher eine Methode geschrieben, die an den Anfang der Batch-Datei die folgenden Zeilen einträgt:

Code: Alles auswählen

@echo off
c:
cd \
cd \Programm\2011.11.11_12-04-17\
rem -----------------------------------------------
@echo on
Diese Zeilen werden natürlich für jedes Unterverzeichnis entsprechend angepasst und nur dann eingefügt, wenn sie noch nicht vorhanden sind.
Auch das funktioniert einwandfrei.

Aber das Modifizieren von Batch-Dateien ist doch ein recht umständlicher Weg.
Er funktioniert zwar, aber dafür müsste es doch eine elegantere Variante geben, oder?
Also ein Aufruf von Externen Anwendungen, bei dem man gleichzeitig das Arbeitsverzeichnis setzen kann.
Gibt es so etwas?

Noch eine Info:
Ich und meine Kollegen laden uns bei Bedarf verschiedene Versionen dieser Anwendung herunter.
Daher muss das ganze Dynamisch funktionieren, da ich nicht weiß, welche Versionen meine Kollegen auf ihrem Rechner haben.

Danke für die Hilfe!

Gruß

OLLI
Zuletzt geändert von OLLI_S am Mi 1. Feb 2012, 12:43, insgesamt 1-mal geändert.

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Externes Programm starten mit Arbeitsverzeichnis

Beitrag von DiBo33 »

AProcess schreiben, Punkt hinzufügen und die Methodenliste anzeigen lassen, et voila da gibts ja CurrentDirectory was das wohl sein mag?

OLLI_S
Beiträge: 65
Registriert: Di 17. Jan 2012, 20:55

Re: Externes Programm starten mit Arbeitsverzeichnis

Beitrag von OLLI_S »

DiBo33 hat geschrieben:AProcess schreiben, Punkt hinzufügen und die Methodenliste anzeigen lassen, et voila da gibts ja CurrentDirectory was das wohl sein mag?
Gut, dass nicht alle so überhebliche Antworten schreiben, wie die Antwort oben.
Danke aber trotzdem, das "CurrentDirectory" ist genau das, was ich brauche.

Gruß

OLLI

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Externes Programm starten mit Arbeitsverzeichnis

Beitrag von theo »

OLLI_S hat geschrieben: Gut, dass nicht alle so überhebliche Antworten schreiben, wie die Antwort oben.
Sei froh wenn dir geholfen wird. Als Neuling gleich rumzumotzen kommt auch nicht gut.
Ausserdem hat DiBo33 schon recht, wenn er dir zeigt, wie man so etwas selber herausfinden kann.

OLLI_S
Beiträge: 65
Registriert: Di 17. Jan 2012, 20:55

Re: Externes Programm starten mit Arbeitsverzeichnis

Beitrag von OLLI_S »

theo hat geschrieben:Sei froh wenn dir geholfen wird
Natürlich bin ich froh, wenn mir geholfen wird.
Ich bedanke mich auch immer "ganz artig" und setze den Text "[GELÖST]" vor den Beitrag, damit andere sehen, dass sich das Thema erledigt hat.
theo hat geschrieben:Als Neuling gleich rumzumotzen kommt auch nicht gut.
Ausserdem hat DiBo33 schon recht, wenn er dir zeigt, wie man so etwas selber herausfinden kann.
Natürlich hat mir DiBo33 geholfen und natürlich habe ich nichts gegen einen Hinweis, der mich selber auf das Ziel führt.
Ich finde nur, dass das "was das wohl sein mag?" ein wenig überheblich klingt.

Gruß

OLLI

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Externes Programm starten mit Arbeitsverzeichnis

Beitrag von theo »

OLLI_S hat geschrieben: Ich finde nur, dass das "was das wohl sein mag?" ein wenig überheblich klingt.
Kann schon sein, dass du das findest, aber als Newbie behältst du das besser für dich.
Es wirkt unsympathisch und undankbar.

OLLI_S
Beiträge: 65
Registriert: Di 17. Jan 2012, 20:55

Re: [GELÖST] Externes Programm starten mit Arbeitsverzeichnis

Beitrag von OLLI_S »

theo hat geschrieben:Kann schon sein, dass du das findest, aber als Newbie behältst du das besser für dich.
Es wirkt unsympathisch und undankbar.
OK, werde ich in Zukunft für mich behalten!

Gruß

OLLI

Antworten