1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Mit Batch Festplattenbelegung aller Laufwerke auslesen

Discussion in 'Programmieren' started by Gandalf87, Jul 6, 2010.

Thread Status:
Not open for further replies.
  1. Gandalf87

    Gandalf87 Byte

    Hallo zusammen

    Ich hätte gerne eine Batch, die den freien (oder benutzten; ist egal) Speicherplatz aller Laufwerke ausliest, addiert und in eine Variable packt.

    Für Antworten bin ich sehr dankbar

    Gandalf
     
  2. chipchap

    chipchap Ganzes Gigabyte

    Hallo Gandalf87!

    Hier die Lösung in Visual Basic 6:
    Code:
    Public GesamtFrei As Double
    Public LWfrei As Double
    
    Private Sub Form_Load()
    GesamtFrei = 0
    LWfrei = 0
    Text1 = ""
    End Sub
    
    Private Sub Command1_Click()
    Dim fso As New FileSystemObject
        Dim dr As Drive
        Text1 = ""
        On Error Resume Next
        For Each dr In fso.Drives
            LWfrei = dr.AvailableSpace / 1024 / 1024
            Text1 = Text1 & dr & vbTab & FormatNumber(LWfrei, 1) & vbTab & " MB frei" & vbCrLf
            GesamtFrei = GesamtFrei + LWfrei
        Next
        Text1 = Text1 & vbCrLf & "Gesamt Frei = " & FormatNumber(GesamtFrei, 3) & " MB" & vbCrLf
    End Sub
    
    Der ausführende Button heißt "Command1" und das Textfeld "Text1" und muß auf "Multiline = TRUE" in den Eigenschaften gestellt werden.

    So sieht das Ergebnis aus:

    [​IMG]

    Wenn Du die Zwischenausgaben der einzelnen Laufwerke nicht brauchst, kommentiere die Zeile in der For-Next-Schleife beim fso einfach aus.

    Gruß chipchap
     
  3. Gandalf87

    Gandalf87 Byte

    Danke

    Nette Lösung, aber ich kann es wirklich nur in Batch brauchen.

    Gandalf
     
  4. kazhar

    kazhar Viertel Gigabyte

    nur batch? soll das für eine bootdisk/cd/o.ä. sein?


    mit der erweiterten syntax kann ich mir grade so eben vorstellen dass es geht, unter "echten" dos funktioniert das aber ziemlich sicher ohne zusätzliches programm nicht.
     
  5. Gandalf87

    Gandalf87 Byte

    Hallo nochmal

    Was ich gut brauchen könnte, wäre wenn eine EXE den gefragten Wert zurückgibt. Wie könnte man das in VB Express 2008 machen, möglichst ohne das sich eine Form öffnet?
    Ich hab damit noch nicht viel Erfahrung.

    Danke für alle Antworten
    Gandalf
     
  6. kazhar

    kazhar Viertel Gigabyte

    sag doch endlich für was das gut sein soll. :D

    von der oben erwähnten bootdisk kannst nämlich auch keine windows programme starten...
     
  7. Gandalf87

    Gandalf87 Byte

    Ja Sorry
    Hatte deinen Beitrag beim ändern/schreiben eines Beitrags übersehen.
    Es ist für ein von mir geschriebenes Löschskript, dass nachher anzeigen soll wie viel gelöscht wurde. Wenn man das auch anders errechnen kann, bin ich dankbar für jede Lösung.

    Gandalf
     
    Last edited: Jul 8, 2010
  8. Gandalf87

    Gandalf87 Byte

    Was ist am folgenden Code falsch?
    Der zeigt mir zu wenig freien Speicher an.

    Code:
    @echo off
    set gesamtvorher=0
    if exist c: (
    for /f "tokens=3" %%i in ('dir /-c^|findstr /c:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist d: (
    for /f "tokens=3" %%i in ('dir /-d^|findstr /d:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist e: (
    for /f "tokens=3" %%i in ('dir /-e^|findstr /e:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist f: (
    for /f "tokens=3" %%i in ('dir /-f^|findstr /f:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist g: (
    for /f "tokens=3" %%i in ('dir /-g^|findstr /g:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist h: (
    for /f "tokens=3" %%i in ('dir /-h^|findstr /h:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist i: (
    for /f "tokens=3" %%i in ('dir /-i^|findstr /i:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist j: (
    for /f "tokens=3" %%i in ('dir /-j^|findstr /j:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist k: (
    for /f "tokens=3" %%i in ('dir /-k^|findstr /k:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist l: (
    for /f "tokens=3" %%i in ('dir /-l^|findstr /l:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist m: (
    for /f "tokens=3" %%i in ('dir /-m^|findstr /m:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist n: (
    for /f "tokens=3" %%i in ('dir /-n^|findstr /n:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist o: (
    for /f "tokens=3" %%i in ('dir /-o^|findstr /o:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist p: (
    for /f "tokens=3" %%i in ('dir /-p^|findstr /p:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist q: (
    for /f "tokens=3" %%i in ('dir /-q^|findstr /q:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist r: (
    for /f "tokens=3" %%i in ('dir /-r^|findstr /r:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist s: (
    for /f "tokens=3" %%i in ('dir /-s^|findstr /s:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist t: (
    for /f "tokens=3" %%i in ('dir /-t^|findstr /t:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist u: (
    for /f "tokens=3" %%i in ('dir /-u^|findstr /u:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist v: (
    for /f "tokens=3" %%i in ('dir /-v^|findstr /v:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist w: (
    for /f "tokens=3" %%i in ('dir /-w^|findstr /w:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist x: (
    for /f "tokens=3" %%i in ('dir /-x^|findstr /x:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist y: (
    for /f "tokens=3" %%i in ('dir /-y^|findstr /y:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    if exist z: (
    for /f "tokens=3" %%i in ('dir /-z^|findstr /z:"Bytes frei"') do set "temp=%%i">nul
    set /a gesamtvorher=%gesamtvorher%+%temp%
    )
    echo In Bytes: %gesamtvorher%
    set /a gesamtvorher=%gesamtvorher%/1000
    echo In KiloBytes: %gesamtvorher%
    set /a gesamtvorher=%gesamtvorher%/1000
    echo In MegaBytes: %gesamtvorher%
    set /a gesamtvorher=%gesamtvorher%/1000
    echo In GigaBytes: %gesamtvorher%
    pause
    
    Danke
     
Thread Status:
Not open for further replies.

Share This Page