# Backslashes werden in der Ausgabe nicht übernommen



## Oscuro (15. Jan 2010)

Hallo zusammen nachdem mir von google doppelte \ bzw "stripslashes" empfohlen wurden, jedoch beide nicht funktionieren (oder ich bekomme die Stripsplasehs nicht hin, was auch sein kann) wollte ich mal nachfragen, ob jemand mein Problem lösen kann. Die Forensuche bezüglish Stripslashes blieb leider auch erfolglos.

Hier mein problem:
Ich möchte durch einen Befehl mit der CMD eine Datei kopieren


```
Runtime.getRuntime().exec("copy \"C:\\Dokumente und Einstellungen\\....\" \"C:\\Dokumente und Einstellungen\\.....\"");
```


Die Fehler in der Konsole lauten

Exception in thread "main" java.io.IOException: Cannot run program "copy": CreateProcess error=2, Das System kann die angegebene Datei nicht finden
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
	at java.lang.Runtime.exec(Runtime.java:593)
	at java.lang.Runtime.exec(Runtime.java:431)
	at java.lang.Runtime.exec(Runtime.java:328)
	at Shutdown.Shutdown.setCountDown(Shutdown.java:26)
	at Shutdown.Shutdown.main(Shutdown.java:9)
Caused by: java.io.IOException: CreateProcess error=2, Das System kann die angegebene Datei nicht finden
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
	at java.lang.ProcessImpl.start(ProcessImpl.java:30)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
	... 5 more


Die Exception lässt vermuten, dass der Fehler nur darin besteht, dass er die Datei nicht finden kann.
An dem Rest des Programmes kann es nicht hängen, da ich in einen funktionierenden Befehl in den besagten Ausdruck abgeändert habe und er dann ebenso den Fehler bringt.
Es scheint also an den \\ oder an den \" zu hängen.
Ich habe es auch schon mit normalen Slashes im Dateipfad versucht(die Windows auch erkennen sollte) was jedoch auch gescheitert ist (auch bei manuellem eingeben in die Konsole)

btw: Wenn ich in der CMD den Befehl manuell eingebe: copy "C:\Dokuemente und Einstellungen\...." "....." funktioniert das kopieren ohne Probleme!

Wäre super wenn mir jemand helfen könnte 

mfg
Oscuro


----------



## nrg (15. Jan 2010)

Java Platform SE 6 Class File



			
				Java API Class File hat gesagt.:
			
		

> static String	pathSeparator
> The system-dependent path-separator character, represented as a string for convenience.
> 
> static char	pathSeparatorChar
> ...



grüße
nrg

edit:
kleines Beispiel vielleicht noch:

```
String path = "C:" + File.separator + "Programme" + File.separator;
```


----------



## SlaterB (15. Jan 2010)

```
public class Test {
    public static void main(String[] args)   throws Exception  {
        String path = "C:\\Dokumente und Einstellungen\\...\\Eigene Dateien\\screen1.png";
        String path2 = path + "2";
        Process p = Runtime.getRuntime().exec("cmd /c copy \"" + path + "\" \"" + path2 + "\"");
        
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        String line = null;
        while ((line = br.readLine()) != null)
        {
            System.out.println("e: " + line);
        }
        br = new BufferedReader(new InputStreamReader(p.getInputStream()));
        while ((line = br.readLine()) != null)
        {
            System.out.println("o: " + line);
        }
        System.out.println("end");
    }
}
```


----------



## nrg (15. Jan 2010)

habs auch grad von einem Kollegen erfahren, dass man bei manchen execs "cmd" vorne mit anhängen muss. Naja dann mein Post wohl eher zur info, wenn man mal die Seperatoren Plattformübergreifend darstellen will.

grüße


----------



## Firestorm87 (15. Jan 2010)

> ```
> Runtime.getRuntime().exec("copy \"C:\\Dokumente und Einstellungen\\....\" \"C:\\Dokumente und Einstellungen\\.....\"");
> ```
> 
> ...



Dabei kann er aber das Programm "copy" nicht finden!
Es geht dabei nicht um den Pfad, wie du vermutest!

Gruß
Firestorm

PS: Wie Vorposter.... hänge ein "cmd" mit herein.

/EDIT: Wieder zu langsam gewesen


----------



## Oscuro (15. Jan 2010)

:applaus: Vielen dank 



```
String path  = "C:\\Dokumente und Einstellungen\\.....";
        String path2 = "C:\\Dokumente und Einstellungen\\.....";
        Process p = Runtime.getRuntime().exec("cmd /c copy \"" + path + "\" \"" + path2 + "\"");
```

hat funktioniert


----------

