Laden...

[erledigt] Batch-Datei (.bat) verhält sich von Hand gestartet anders als per Process.Start gestartet

Erstellt von Chrisexpress vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.595 Views
C
Chrisexpress Themenstarter:in
12 Beiträge seit 2011
vor 12 Jahren
[erledigt] Batch-Datei (.bat) verhält sich von Hand gestartet anders als per Process.Start gestartet

Hallo,

ich würde gerne in meinem Programm auf Knopfdruck das Starten von drei Prozessen ermöglichen. Dabei soll der erste Prozess ein Prozess des MySQL Servers sein.

Mein bisherigen Code (wie ich den MySQL Server über eine .bat Datei starten wollte):


                //mysql
                ProcessStartInfo info1 = new ProcessStartInfo();
                //info1.CreateNoWindow = true;
                //info1.WindowStyle = ProcessWindowStyle.Hidden;
                //info1.UseShellExecute = true;
                info1.FileName = "_Server\\MySQL.bat";

Die zugehörige .bat Datei (MySQL.bat), welche nciht von mir stammt, aber bisher immer gut funktionierte:


@echo off
COLOR F
echo MySQL Server
mysql\bin\mysqld --defaults-file=mysql\bin\my.cnf --standalone --console

if errorlevel 1 goto error
goto finish

:error
echo.
echo ERROR: the MySQL service could not be started.
echo Please check if no other MySQL server is running.
pause

:finish


Wenn ich die MySQL.bat normal starte, geht alles wunderbar, aber sobald ich den Prozess, wie oben aus einem C# Programm aufrufe, kommt die Meldung, dass bereits ein mySQL service aktiv wäre. Habe bereits etwas rumprobiert (auch mit ShellExecute etc.), aber nichts hat geholfen.
Wäre klasse, wenn mir jemand bei diesem Problem behiflich sein könnte, bzw. weiß, wodurch diese Problem entsteht.
Achja: Diese Version des MySQL Servers ist portable

MfG
p.s. Das Programm startet an keiner anderen Stelle den MySQL Server

Mit freundlichen Grüßen, Chris

C
1.214 Beiträge seit 2006
vor 12 Jahren

Das könnte an dem working directory liegen. Ich seh spontan mindestens einen relativen Pfad.

225 Beiträge seit 2005
vor 12 Jahren

Schon mal nachgeschaut ob der Prozess bereits läuft bevor Dein Programm versucht diesen zu starten... und falls er läuft diesen per Hand zu stoppen und dann mal Dein C# Programm starten... gehts es dann?

C
Chrisexpress Themenstarter:in
12 Beiträge seit 2011
vor 12 Jahren

Ja, ich habe bereits versucht zu schauen, ob vor dem Start des MySQL Servers bereits ein Prozess davon läuft und auch im Programm entsprechende Maßnahmen getroffen, um die Prozesse zu beenden. Die Erkenntnis war, dass sich nichts änderte.

Mit freundlichen Grüßen, Chris

A
764 Beiträge seit 2007
vor 12 Jahren

Starte nicht die Batch-Datei direkt, sondern die Kommandozeile cmd mit der Batch als Parameter.

Hinweis von herbivore vor 12 Jahren

... gemeint ist Process.Start ("cmd.exe", "/c deinebatchdatei.bat");

C
Chrisexpress Themenstarter:in
12 Beiträge seit 2011
vor 12 Jahren

Danke für alle Antworten, tatsächlich geholfen hat mir der Hinweis mit dem working directory

Das könnte an dem working directory liegen. Ich seh spontan mindestens einen relativen Pfad.

Ich habe das Programm jetzt mal in den "_Server" Ordner verschoben und die MySQL.bat daraus gestartet - siehe da, es funktioniert.

Damit wäre das Problem behoben.

MfG

Mit freundlichen Grüßen, Chris

4.941 Beiträge seit 2008
vor 12 Jahren

Hallo Chrisexpress,

es hätte auch gereicht die ProcessStartInfo.WorkingDirectory-Eigenschaft passend zu setzen...