Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Befehl SHELL "RD /S /Q *Verzeichnis*"

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
alseppo



Anmeldungsdatum: 04.01.2006
Beiträge: 3

BeitragVerfasst am: 04.01.2006, 09:13    Titel: Befehl SHELL "RD /S /Q *Verzeichnis*" Antworten mit Zitat

Hallo,

habe folgendes Problem:

Bei dem Befehl SHELL "RD /S /Q *Verzeichnis*" funktionieren die Parameter nicht...
es wirft immer den Fehler:
Unzulässige Option - /S
Erweiterter Fehler 183

Hintergrund:
Habe Windows XP SP1, will mir ein kleines Programm erstellen mit QBasic/FreeBasic um Dateien weg zu Sichern, auf meinen Server zu Übertragen und danach die Daten auf dem Client zu löschen..
Alles Funktioniert bis auf das löschen der Daten am Client...
Habe den Befehl "RD" mit den Parametern "/S für Unterverzeichnisse löschen" und "/Q ohne Bestätigung" gewählt weil es unter Windows ja den DELTREE nicht mehr gibt...
"RD" ohne den Parametern funktioniert nur wenn kein Unterverzeichnis vorhanden ist..

So schaut mein Quelltext aus...
SHELL "RD /S /Q DATA " (Data = das zu löschende Verzeichnis)
(Das Verzeichnis Data besitzt sehr viele Unter- und Verzeichnisse + Dateien)

Was kann ich tun?
PS: muss dazu sagen das mein Basic ein wenig eingerostet ist...hab die letzten 12 Jahre nix mehr gemacht mit den Augen rollen

Gruß
Josi
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Manuel



Anmeldungsdatum: 23.10.2004
Beiträge: 1271
Wohnort: Bayern

BeitragVerfasst am: 04.01.2006, 12:04    Titel: Antworten mit Zitat

Eine Möglichkeit wäre (mit Hilfe des DIR-Befehls in der CMD) zu überprüfen, ob Ordner vorhanden sind (am besten durch die Umleitung in eine Datei). Sind welche Vorhanden, müsste man in diesen Ordner wechseln, dort nach Ordnern überprüfen etc. bis man in ein Unterverzeichnis angelangt ist, in dem es keine weiteren Unterordner mehr gibt. Dann alle Dateien von diesem Ordner löschen, dann im Verzeichnis darüber den Ordner, bei dem man gerade alle Dateien gelöscht hat, den Ordner selber löschen. Dann noch überprüfen, ob sich weitere Unterordner im Ordner aufhalten... Dann wieder alles von vorne. Allerdings bräuchtest du erstens Kenntnisse im Bereich der Rekursion (Selbstaufruf), sonst wird's ein ellenlanger Code. Außerdem könnte es, je nach Verbindungsgeschwindigkeit zwischen Server und Client, das Löschen eines Ordners mit vielen Unterordnern ebenfalls lange dauern, da der Client beim Wechsel eines Ordners ja alle Dateinamen und deren Attribute zurückschicken muss.

Zugegeben, eine ziemlich langwierige Methode, die aber 100%ig funktioniert... Ich würde sie wählen, wenn es keine andere gäbe^^.
_________________
DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger
alseppo



Anmeldungsdatum: 04.01.2006
Beiträge: 3

BeitragVerfasst am: 04.01.2006, 12:33    Titel: Antworten mit Zitat

Zitat:
Eine Möglichkeit wäre (mit Hilfe des DIR-Befehls in der CMD) zu überprüfen, ob Ordner vorhanden sind (am besten durch die Umleitung in eine Datei). Sind welche Vorhanden, müsste man in diesen Ordner wechseln, dort nach Ordnern überprüfen etc. bis man in ein Unterverzeichnis angelangt ist, in dem es keine weiteren Unterordner mehr gibt. Dann alle Dateien von diesem Ordner löschen, dann im Verzeichnis darüber den Ordner, bei dem man gerade alle Dateien gelöscht hat, den Ordner selber löschen. Dann noch überprüfen, ob sich weitere Unterordner im Ordner aufhalten... Dann wieder alles von vorne.


Dachte an sowas auch erst, habe aber das problem das wenn er alle Datei+Verzeichnisnamen eingelesen hat diese Datei dann 154k groß ist und er mir Überlauf meldet wenn ich diese einlesen will.... weinen
sind ca 5000 Dateien + Verzeichnisse...

gibts da noch nen anderen weg?

Mir wäre auch geholfen wenn meine *.bas später eine *.bat aufruft wo der "RD" Befehl funktioniert... Problem ist aber das er mir, wenn ich die *.bat über meine *.bas aufruf den gleichen Fehler zurückgibt wie wenns in der *bas steht... wenn *.bat manuel aufgerufen wird gehts mit dem Kopf durch die Mauer wollen

Habe das ganze mit dem FreeBasic v0.15b Compiler gemacht wg 32bit und so hat aber genauso wenig funktioniert wie QBasic 4.5... Kopf schütteln

Help![/quote]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 04.01.2006, 13:14    Titel: Antworten mit Zitat

Hallo.

Na dann kannst du die nicht alle in ein Array packen. Sammel am besten alles, was du löschen willst, in einer TMP Datei ("LOESCH.TMP") und dann machst du Folgendes:
Code:
CLS
OPEN "LOESCH.TMP" FOR INPUT AS #1
DO UNTIL EOF(1)
 LINE INPUT #1, Zeile$
 If Zeile$ <> "" THEN KILL Zeile$
 LOCATE 1,1: PRINT STRING$(50," ")
 LOCATE 1,1: PRINT Zeile$+" wurde gelöscht."
 IF EOF(1) THEN EXIT DO
LOOP
CLOSE #1
KILL "LOESCH.TMP"
PRINT "Alles weg!"
SLEEP: END


edit: Achso, du nutzt FB. Da können Arrays so groß sein wie du willst. Du hast dann sicherlich beim Dimensionieren eines Arrays was verkehrt gemacht. Poste am besten mal deinen Code.

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
alseppo



Anmeldungsdatum: 04.01.2006
Beiträge: 3

BeitragVerfasst am: 05.01.2006, 09:09    Titel: Antworten mit Zitat

Danke für die schnelle Hilfe...jetzt funktionierts happy
hatte zwischen Pfad und Parameter kein Leerzeichen
peinlich
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz