# Datei verstecken



## FetterOtter (16. Feb 2011)

Hallo Leute,

heute muss ich euch einfach mal um Hilfe anhauen. Bisher bin ich immer mit der Suche über die
bestehenden Einträge fündig geworden, aber an diesem Problem beiße ich mir seit Tagen die Zähne
aus...

Ich möchte einer Datei das Attribut "hidden" (= versteckt) verpassen. Ich benutze dafür folgenden
Code:


```
Runtime.getRuntime().exec(new String[] {"cmd", "/c", "attrib +H", file.getAbsolutePath()});
```

Mal hat's geklappt, mal nicht... Bis ich durch endloses Probieren dahinter gekommen bin, dass es an
blanks im Datei-Pfad liegt.

Also:

```
Runtime.getRuntime().exec(new String[] {"cmd", "/c", "attrib +H", "D:/temp/test.txt"});
```
haut hin,

```
Runtime.getRuntime().exec(new String[] {"cmd", "/c", "attrib +H", "D:/temp/test test.txt"});
```
haut nicht hin.

Hat jemand einen Tip, wie ich das Problem lösen kann? 
Ich bin zu jung für noch mehr graue Haare...

Liebe Grüße
-----------


----------



## bygones (16. Feb 2011)

1. keine blanks verwenden ;-)
2. klappt %20 [c]D:/temp/test%20test.txt[/c] - unter der voraussetzung %20 ist blank... *nachdenk*


----------



## FetterOtter (16. Feb 2011)

Nee, hab's eben probiert, die blanks durch %20 zu ersetzen, aber das geht leider auch nicht...

Ich kann dem Anwender schlecht untersagen, seine Dateien in Verzeichnisse zu kopieren oder
zu speichern, in denen blanks vorkommen (Klassiker: "Eigene Dateien" oder "Dokumente und Einstellungen")


----------



## Raum114 (16. Feb 2011)

Man muss den Pfad in Anführungszeichen setzen "\"D:/temp/test test.txt\"". Aber wieso willst Dateien verstecken?


----------



## redictable (16. Feb 2011)

Alternativ zu den Anführungszeichen kannst du auch noch den blank in dem String mit Hilfe eines Backslashes escapen.

Greetz


----------



## FetterOtter (16. Feb 2011)

Das probiere ich gleich mal aus, dankeschön.

Es geht u.a. darum, Sicherungskopien von Verzeichnissen zu erstellen. Und die sollen halt alle
Attribute haben, die auch die Originale aufweisen - besonders wichtig, wenn die Sicherungskopien
wieder zurückgeladen werden sollen...


----------



## FetterOtter (16. Feb 2011)

Also, das mit den Anführungszeichen hat leider auch nicht geklappt...

@redictable:
Wie meinst du das genau? Einfach einen Backslash vor das blank quetschen? (Ist wahrscheinlich
'ne Doofie-Frage, ich weiß...)
So jedenfalls motzt Eclipse:

```
Runtime.getRuntime().exec(new String[] {"cmd", "/c", "attrib +H", "D:/temp/test\ test.txt"});
```


----------



## timbeau (16. Feb 2011)

Wie siehts mit "\\" statt "\" aus?


----------



## redictable (16. Feb 2011)

timbeau hat gesagt.:


> Wie siehts mit "\\" statt "\" aus?



Exakt, hatte ich vergessen zu erwähnen da auch für Java der Backslash ein Escapezeichen ist musst du das Escapezeichen Escapen damit es in der CMD Escapen kann. Comprende?

Kurz:
\\ sollte gehen


----------



## FetterOtter (16. Feb 2011)

Jupp, mit "\\" ist's lauffähig, aber meine Datei weigert sich standhaft, sich verstecken
zu lassen... <verzweifel>


----------



## Raum114 (16. Feb 2011)

Habs jetzt selber ausprobiert, so gehts...

```
Runtime.getRuntime().exec(new String[]{"cmd", "/c", "attrib", "+H", "\"C:\\temp\\test test.txt\""});
```


----------



## Raum114 (16. Feb 2011)

Kann meinen Betrag nicht editieren: Man braucht auch den Pfad nicht mehr in Anführzungszeichen setzen.


----------



## FetterOtter (16. Feb 2011)

@Raum114: Du hast dir den Titel "Engel des Tages" verdient, vielen herzlichen Dank !!!
Auf die Idee, auch noch "attrib" und "+h" zu trennen, wäre ich nicht gekommen...
Aber nun klappt es einwandfrei !!

Und danke an alle, die ebenfalls versucht haben, zu helfen, ihr seid eine tolle Community !!


----------

