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:

Ordnergröße ermitteln?

 
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
fwilhelm



Anmeldungsdatum: 23.07.2007
Beiträge: 4

BeitragVerfasst am: 23.07.2007, 20:55    Titel: Ordnergröße ermitteln? Antworten mit Zitat

Hallo zusammen,
bin leider ein Anfänger was qbasic prog. betrifft. Vielleicht kann mir jemand helfen. und zwar..
Ich habe einen Ordner in dem ich einige Dateien habe. Wie kann ich herausfinden wieviel Speicher KB in diesem Ordner sind.

Bitte helft mir. weinen weinen mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 23.07.2007, 21:04    Titel: Antworten mit Zitat

Es gibt bestimmt elegantere loesungen dafuer, aber diese hier ist mit spontan eingefallen...

Code:
Dim S1 as String

open pipe "dir" for input as #1
 While not eof(1)
  line input #1,S1
  If INSTR(S1,"(en)") and INSTR(S1,"Bytes") Then ?S1
 Wend
Close #1
sleep

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 23.07.2007, 21:14    Titel: Antworten mit Zitat

Hallo,

wie wär's hiermit? lächeln
Code:
CLS
SHELL "DIR>" + ENVIRON$("TEMP") + "\dateien.tmp"
StrBytes$ = ""
OPEN ENVIRON$("TEMP") + "\dateien.tmp" FOR INPUT AS #1
DO UNTIL EOF(1)
        LINE INPUT #1, Zeile$
        IF LEFT$(Zeile$, 2) = "  " THEN
                ende% = INSTR(UCASE$(Zeile$), "BYTES")
                lx% = 0
                FOR i% = 1 TO ende% - 2
                        IF MID$(Zeile$, i%, 1) = " " THEN lx% = i%
                NEXT i%
                tmp$ = MID$(Zeile$, lx% + 1, ende% - lx%)
                FOR i% = 1 TO LEN(tmp$)
                        b$ = MID$(tmp$, i%, 1)
                        IF b$ <> "." AND b$ <> "," THEN
                                StrBytes$ = StrBytes$ + b$
                        END IF
                NEXT i%
                Bytes& = VAL(StrBytes$)
                EXIT DO
        END IF
LOOP
CLOSE #1
KILL ENVIRON$("TEMP") + "\dateien.tmp"
IF StrBytes$ = "" THEN
        PRINT "Fehler. Belegter Speicher konnte nicht ermittelt werden."
ELSE
        PRINT "Bytes im Verzeichnis: "; LTRIM$(STR$(Bytes&))
END IF
SLEEP: END


Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!


Zuletzt bearbeitet von Sebastian am 23.07.2007, 21:29, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fwilhelm



Anmeldungsdatum: 23.07.2007
Beiträge: 4

BeitragVerfasst am: 23.07.2007, 21:19    Titel: Antworten mit Zitat

open pipe "dir" for input as #1 <-- Bei dieser Eingabe habe ich Probleme
Anstatt "dir" habe ich meinen Pfad eingegen "C:\VBDOS"; Leider bekomme ich immer wieder einen Fehler

Was mache ich falsch? mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 23.07.2007, 21:21    Titel: Antworten mit Zitat

das ist klar... das Dir muss bleiben... du kannst deinen Pfad aber dahinter schreiben... am besten mit einem String

also open pipe "dir "+Pfad$......

dann sollte es eigentlich gehen...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 23.07.2007, 21:23    Titel: Antworten mit Zitat

In QB gibts kein PIPE. Das ist neu in FreeBASIC. Der Code, den ich oben gepostet hab, ist mit QB 4.5 getestet.
_________________

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
fwilhelm



Anmeldungsdatum: 23.07.2007
Beiträge: 4

BeitragVerfasst am: 23.07.2007, 21:25    Titel: Antworten mit Zitat

open pipe "dir" +C:\Test$ for input as #1 funktioniert leider auch nicht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
fwilhelm



Anmeldungsdatum: 23.07.2007
Beiträge: 4

BeitragVerfasst am: 23.07.2007, 21:26    Titel: Antworten mit Zitat

kann ich eine freebasic anwendung auch unter windows NT4.0 ausführen

Aber kann es sein das bei deinem Code ich die Dateien im Ordner wissen muss.
DieAnzahl ist mir leider unbekannt.


Zuletzt bearbeitet von fwilhelm am 23.07.2007, 21:31, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 23.07.2007, 21:27    Titel: Antworten mit Zitat

In QB gibts kein PIPE. Das ist neu in FreeBASIC. Eternal_Pains Code ist nur zur Ausführung mit FreeBASIC gedacht. Der Code, den ich oben gepostet hab, ist mit QB 4.5 getestet und funktioniert.

//edit: FreeBASIC Anwendungen laufen auch unter Windows NT4. Ich selbst arbeite damit täglich. Btw, bitte nutze doch die EDIT-Funktion des Forums, um deine Beiträge nachher zu ergänzen.


_________________

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
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 23.07.2007, 21:44    Titel: Antworten mit Zitat

Schau dir zudem lieber nochmal ein Tutorial über QB bzw. FB an, eins mit Grundlagen. zwinkern
In deinem Versuch den Pfad dahinter zu schreiben hast du QB glauben lassne, es gebe eine Variable namens "C:\Test$". Widerspricht aber den erlaubten Zeichen Variablen, zudem willst du ja den String ansich dazu schreiben.
Code:

[...] "dir c:\test"[...]


Aber wie Sebastian schon sagte, für (Open) Pipe brauchst du FB.
Zudem ist es ratsam, sich alle Antworten in einem Thread, den man selbst geöffnet hat, anzuschauen und die dort beschriebenen Lösungen auszuprobieren. Nicht immer ist die erste Lösung auch die Beste (bzw. Funktionierende).
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 24.07.2007, 12:02    Titel: Antworten mit Zitat

@fwilhelm: Nein, das ist nicht nötig. Hier jetzt auch noch mal der Code mit Angabemöglichkeit für ein anderes Verzeichnis:
Code:
CLS
Pfad$ = "C:\PROGS" '<= DOS 8.3 Format beachten!
SHELL "DIR "+Pfad$+">" + ENVIRON$("TEMP") + "\dateien.tmp"
StrBytes$ = ""
OPEN ENVIRON$("TEMP") + "\dateien.tmp" FOR INPUT AS #1
DO UNTIL EOF(1)
        LINE INPUT #1, Zeile$
        IF LEFT$(Zeile$, 2) = "  " THEN
                ende% = INSTR(UCASE$(Zeile$), "BYTES")
                lx% = 0
                FOR i% = 1 TO ende% - 2
                        IF MID$(Zeile$, i%, 1) = " " THEN lx% = i%
                NEXT i%
                tmp$ = MID$(Zeile$, lx% + 1, ende% - lx%)
                FOR i% = 1 TO LEN(tmp$)
                        b$ = MID$(tmp$, i%, 1)
                        IF b$ <> "." AND b$ <> "," THEN
                                StrBytes$ = StrBytes$ + b$
                        END IF
                NEXT i%
                Bytes& = VAL(StrBytes$)
                EXIT DO
        END IF
LOOP
CLOSE #1
KILL ENVIRON$("TEMP") + "\dateien.tmp"
IF StrBytes$ = "" THEN
        PRINT "Fehler. Belegter Speicher konnte nicht ermittelt werden."
ELSE
        PRINT "Bytes im Verzeichnis: "; LTRIM$(STR$(Bytes&))
END IF
SLEEP: END

_________________

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
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