FileManager Shell in aktuellem Ordner öffnen

hi,
ich möchte für meinen File-manager noch eine Funktion die ich über einen BUtton aufrufen kann, um die Shell (Windows) für den aktuell gewählten Pfad zu öffnen, also wenn in der Leiste der Pfad C:\ steht soll die shell öffnen mit C:\ , wenn da steht C:\XYZ\Users soll die shell halt mit diesem Pfad öffnen. Geht das irgendwie? Bzw gibs ne Funktion/ Methode in JAVA die ein Programm aufrufen / ausführen kann und dann nebenbei noch den Pfad in der cmd setzt??

Die Logik für den Button usw. steht schon ich möchte nur die Funktionalität irgendwie hinkriegen…

erstmal generell frage : WARUM überhaupt CMD ?
der befehlszeileninterpreter ist kein all-heil-würg-a-raund nur weil man nicht vernünftig mit child-prozessen umgehen kann

aber um deine frage zu beantworten : JA, es ist möglich, man müsste nur mal die DOC richtig lesen (ggf auch das MSDN speziell zu CMD.exe)

das ist mir schon bewusst das das ein starkes Tool ist, aber in UNIX kann man es ja auch und es ist halt nur ne Bequemlichkeit wenn man besser mit der cmd umgehen kann als alles mit klicks graphisch zu machen…
ich habs bisher nur mit normalen Programmen geschafft… Runtime.getRuntime().exec(“notepad”);

EDIT: habs hinbekommen die cmd.exe zu starten, nur den richtigen Pfad zu setzen fehlt noch geht das irgendwie?

ich versteh jetzt erstmal überhaupt nicht was du jetzt mit unix willst, denn wie gesagt : mit der system-shell rumzuspielen weil man nicht weis wie man korrekt mit child-prozessen umgeht ist keine einfache bequemlichkeit sondern einfach nur extreme fehl-konzeption

zum edit : wie gesagt : lies dir die DOC durch, frag google und wenn es halt speziell um eine windows-komponente geht konsultier zusätzlich das MSDN

ich werde dir hier sicher keine musterlösung posten, denn die direkte konkrete antwort auf deine spezielle frage findest du sowohl hier als auch im anderen forum (ich verkneif mir mal die namentliche nennung)

entweder versuchst du selbst dieses wirklich sehr einfach problem selbst zu lösen, hoffst das irgendjemand mal wieder einfach nur die langeweile schiebt und dir ne lösung postet , oder du lernst wie man richtig mit child-prozessen umgeht und wie du das was du machen willst OHNE die system-shell machen kannst, denn sonst brauchst du kein java sonst kannst gleich ein shell-script (BATch / SHell) schreiben

nanu warum so aggressiv ? Du meinst es ist ein sicherheitsproblem wenn jemand unbefugtes die cmd aufrufen kann und damit rumspielen kann? das ist mir schon bewusst aber darum gehts gar nicht…

ich bin ein wenig weitergekommen , ich weiss da fehlt auch nichtmehr viel :stuck_out_tongue:

String currentPath = sideFunctionsHelper.getCurrentFolderName().toString();
				ProcessBuilder b = new ProcessBuilder();
				b.environment().put("PATH", currentPath);
				b.command("cmd", "/c", "start", currentPath);				
				b.start();	

er ruft aber nur den aktuellen Ordnerpfad aus windows aus auf… :confused:

Guck mal hier: http://docs.oracle.com/javase/6/docs/api/java/awt/Desktop.html#open(java.io.File)

habs hinbekommen…

public void openCMDShell() {
		try {
			//Runtime.getRuntime().exec("notepad");
			String path = getCurrentFolderName().toString();
			ProcessBuilder b = new ProcessBuilder();				
			b.command("cmd /c start cmd.exe /K \"cd " + path+ " && dir" ); 			
			b.start();				
		}
		    catch (IOException e) {
		    	System.err.println(e.toString());
		    } 
	}

Im Catchblock würde ich e.printStackTrace() vorziehen. Sonst siehst du nur den Fehlertext, aber nicht wo er auftrat und was vorher passierte.

ok, kann mir jemand noch sagen was die parameter bedeuten in der command Methode? cmd /c start cmd.exe /K?? hab mich damit noch nicht so richtig auseinandergesetzt, und auch noch keine richtige DOC dazu gefunden zu dem Befehl…

schreib mal cmd /? in deine Konsole

jo ich weiss was /K bedeutet usw. ich wollte eher die Methode command(Parameter1, Parameter2, usw) in JAVA näher kennenlernen…