Problem Pfad zu wechseln

  • Themenstarter Themenstarter Gast2
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast2

Gast
Hallo zusammen,

ich wollte eine exe ausführen. Doch ich komm noch nicht einmal bis zu dem Pfad.
bekomme jedesmal den fehler.

<ERROR>
Der Befehl "/Programme/MySQL/" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
</ERROR>


Code:
	     try
		        {      
		    	 
		            Runtime rt = Runtime.getRuntime();
		            Process proc = rt.exec("cmd /C/Programme/MySQL/");
		            InputStream stderr = proc.getErrorStreamsql'");
		            InputStreamReader isr = new InputStreamReader(stderr);
		            BufferedReader br = new BufferedReader(isr);
		            String line = null;
		            System.out.println("<ERROR>");
		            while ( (line = br.readLine()) != null)
		                System.out.println(line);
		            System.out.println("</ERROR>");
		            int exitVal = proc.waitFor();
		            System.out.println("Process exitValue: " + exitVal);
		        } catch (Throwable t)
		          {
		            t.printStackTrace();
		          }
 
"cmd /c C:/Programme/MySQL/"! Wie kommst du auf "cmd /C/Programme/MySQL/"? Du gibst weder das command mit, noch schreibst du den Laufwerksbuchstaben richtig ???:L
 
Hallo,

so könnte man ein Programm unter Windows aufrufen. Die Doppelten Backslashs müssen sein.

Code:
public class ProgrammAufrufen {

    public static void main(String[] args) {
        try {     
            Runtime.getRuntime().exec("C:\\Programme\\Polar\\Polar Precision Performance\\Polar 32.exe");
        } catch (Exception e) {
            System.err.println(e.toString());
        }
    }
}

Gruß Ralf
 
weil ich bis jetzt immer pdf -dateien so aufgerufen habe und es nie ein problem gab.Selbst in der Konsole nicht. und sobald ich das c´: eingefügt habe gab es probleme.
 
Code:
Process proc = rt.exec("cmd /c c:\\Programme\\MySQL\\MySQL Server 6.0\\bin\\mysqldump.exe studio -h localhost -a -C -c -e --user=root --password=****> backup/backup%Date%.sql");

Der Befehl "c:\Programme\MySQL\MySQL" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

mhm 🙁
 
Du musst den Aufruf (sofern er leerzeichen enthält) in Anführungszeichen setzen.

/c stehet für command und weißt die konsole nur darauf hin, dass jetzt noch was "kommt" 😉 .
 
ja das mit den Anführungszeichen weiß ich,aber ich weiß nicht wo ich die genau platzieren soll!!!
Code:
   Process proc = rt.exec("cmd /c c:\\'Programme\\MySQL\\MySQL Server 6.0\\bin\\'mysqldump.exe studio -h localhost -a -C -c -e --user=root --password=****> backup%Date%.sql");
gut zu wissen, das mit dem /c!!!! hab das mit meinen pdfs gleich angepasst und funktioniert auch 😉 thx[/code]
 
Code:
Process proc = rt.exec("cmd /c \"c:\\Programme\\MySQL\\MySQL Server 6.0\\bin\\mysqldump.exe studio -h localhost -a -C -c -e --user=root --password=*****> backup%Date%.sql\"");

<ERROR>
Der Befehl "c:\Programme\MySQL\MySQL" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
</ERROR>

mhm immer noch Probleme mit dem leerzeichen
 
dann schau dir mal die Hilfe zu cmd an, da steht einiges über Leerzeichen, Sonderzeichen, besonderheiten bei /c,......
 
mhm also ich habe jetzt mal das versucht

Code:
Process proc = rt.exec("cmd /c c:\\projekt");

und da bekomm ich auch die gleiche Fehler nachricht
<ERROR>
Der Befehl "c:\projekt" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
</ERROR>

was ist daran falsch?!?!!?!?
 
Naja, Ordner kann man halt nicht ausführen 😉 . Wenn du einen Ordner unter Windows öffnen möchtest, dann "cmd /c explorer C:\\Projekte"
 
befehler? explorer ist einfach ein Programm (der Windows-Explorer), dem du als parameter den Pfad übergibst. Ansonsten kannst du mal in der Kommandozeile "help" eintippen. Da bekommste ne liste 😉 .
 
ich hab es jetzt so gemacht und funktioniert endlich 😉
Code:
String[] list={"cmd","/c","mysqldump.exe","studio","-hlocalhost", "-a","-C","-c", "-e","--user=root","--password="+password,">","backup%date%.sql"};
ProcessBuilder builder = new ProcessBuilder(list);       
 
builder.directory(new File("C:/Programme/MySQL/MySQL Server 6.0/bin"));        
		    
Process process = builder.start( );        
Scanner s = new Scanner(process.getErrorStream( )).useDelimiter("\\Z");        
		if (s.hasNext( )) {            
			FileWriter writer = new FileWriter(new File("c:/backup_error.sql"));           
			writer.write(s.next( ));          
			writer.flush( );           
			writer.close( );       
			} 
		} catch (Throwable t)
		{
		            t.printStackTrace();
		}

meine frage noch hierzu noch!!!
Wie mach ich so einen aufruf auf einen anderen rechner z.B. wenn der rechner inicht der server ist???
 
? Aufruf auf einen anderen Server? Da muss dann wohl n Client laufen, den du kontaktierst und der dann diesen befehl auführt und dir die ergebnisse übers netz zurückschickt.
 
ja genau!!!Gibt es dafür einen befehl oder brauch ich da nur ein gemeinsamses laufwerk für die beide?
 
naja, eine Möglichkeit wäre z. B. ein Laufwerk => einfach. Wenn kein gemeinsames Laufwerk vorhanden ist => Client-Server-Architektur => nicht ganz so einfach
 
ok ich such mal im netz was für client-server...
wie gesagt ich muss ja nur die exe datei von einem client aufrufen...
 
Ein paar Fragen (bevor alle verwirrt sind)

1.) Du schreibst einen Server.
2.) Dieser Server möchte eine exe auf einen Client übers Netzwerk ausführen.
ODER
1.) Du schreibst ein normales Programm.
2.) Dieses Programm möchte eine exe auf einem Netzlaufwerk ausführen.
 
das 2te.
der client soll die mysqldump.exe ausführen.
Zur zeit liegt der MySql Server auf dem gleichen rechner wei das Programm, aber das soll sich noch ändern.
Habs auch schon übers Netzwerk getestet funktioniert auch alles einwandfrei.
Nur ich denke so wie der Befehl oben aussieht wird er kein backup(mysqldump.exe) ,vom client aus ,ausführen.
Gibt es eigentlich eine funktion bzw. befehl um die laufende MySql Version herauszufinden?
 
mhm was genau verstehst du nicht???
ich kann von einem client auf meine datenbank zugreifen!!!!
aber ich kann von meinem client kein mysqldump.exe ausführen(noch nicht versucht).
das geht nur wenn das programm auf meinem server läuft.
da der befehl bis jetzt so aussieht wie oben. und da ist har rein codiert C:\......
und das wird auf dem client nicht funktionieren,das es den ordner ja nicht gibt.
 
ich denke das programm liegt auf dem server => von daher kein Problem. Oder steh ich gerade auf der Leitung?
 
jep zur zeit schon!!!
Aber in naher Zukunft nicht mehr...Darum hab ich auch nach Möglichkeiten gefragt ,dass problem zu lösen 😉!!!
Mir ist nur die Möglichkeit mit dem gemeinsamen Laufwerk bekannt...
Wollte wissen ob es auch andere Möglichkeiten gibt...
 
Ja, auf dem Client n Client-Programm zu installieren, das über Sockets/RMI mit dem Programm auf dem Server kommuniziert und dieses dazu auffordert diese exe auszuführen.
 
ok thx
Werd mich mal einlesen und schauen was ich im netz dazu finde
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben