Forum: PC-Programmierung remove(szPath) -> geht nicht


von gast (Gast)


Lesenswert?

Hallo Leute,

was mache ich falsch?

ICh möchte einen Ordner mit dem Inhalt drin löschen.
Dabei schreibe ich.

>>remove(szPath);

Gruß

: Verschoben durch User
von (prx) A. K. (prx)


Lesenswert?

Auf einem Controller oder auf dem PC?

Jedenfalls kann man Ordner per Systemaufruf meist erst löschen wenn sie 
leer sind.

von gast (Gast)


Lesenswert?

auf dem PC.

Ist es möglich alles auf einmal zu löschen?

von (prx) A. K. (prx)


Lesenswert?

Ungefähr so:
Windows: system("del /s c:\windows")
Linux: system("rm -r /etc")

Aber falsches Forum.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Dabei schreibe ich.
>>remove(szPath);
Gut. Fertig. Und weiter, was passiert dann?

Lies mal die Doku zu deinem Compiler:
szPath ist (wie es der Name schon sagt) ein mit 0 terminierter String, 
der den zu löschenden Pfad angibt.

Sowas
1
remove("c:\\irgendwas\\irgendwo\\irgendwie");
könnte eher funktionieren :-/

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Ungefähr so:
> Windows: system("del /s c:\windows")

Das funktioniert nicht. Verzeichnisse werden unter Windows mit rd 
gelöscht.

del löscht nur die im Verzeichnis enthaltenen Dateien, nicht aber das 
Verzeichnis selbst.

von gast (Gast)


Lesenswert?

oh sch....

ich wollte eigentlich in PC-Programmierung

Ich habe folgenden Befehl eingegeben, leider ist der Order immer noch 
da.

>>system("del /s c:\New Folder")

von (prx) A. K. (prx)


Lesenswert?

Jo, aber nach system("del /s c:\\New Folder") kannst du das Verzeichnis 
mit rmdir() löschen.

von gast (Gast)


Lesenswert?

also mit

>>system("del /s c:\New Folder")
wird nichts vom Inhalt des Ordners gelöscht!

und mit
>>rmdir("c:\New Folder") wird auch nicht der leere Ordner gelöscht!

Was nun?

von (prx) A. K. (prx)


Lesenswert?

system("del /s /q c:\\windows")

von gast (Gast)


Lesenswert?

ne funktioniert auch nicht

von Karl H. (kbuchegg)


Lesenswert?

gast schrieb:
> ne funktioniert auch nicht

Dann mach eine DOS-Box auf (oder wie auch immer das Teil auf deinem 
Windows heist) und probier dort die korrekte Sequenz aus.

Wenn du erst mal das Gewünschte per Command Line erreichen kannst, dann 
kannst du das dann auch vom Programm aus machen.
system() macht nichts anderes als den Commando-Interpreter zu starten 
(so wie wenn du eine DOS-Box aufmachst) und übergibt ihr den String (so 
wie sich die DOS-Box den String vom Benutzer holt)

Aber der Vorteil beim Ausprobieren in einer DOS-Box ist:
Du kriegst Fehlermeldungen vom Commando-Interpreter

Und damit hört sich dann hoffentlich das Stochern im Nebel 'Ne, geht 
auch nicht' auf.

Der einzige gravierende Unterschied:
In C wird innerhalb eines Strings ein \ als \\ geschrieben.
Aber als alter C-Spezi sollte das ja kein Problem sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.