marcoa1505
Goto Top

Auslesen wieviel Platz ist auf der Festplatte

hi,
folgendes Problem habe ich.
Ich erstelle ein Backup der Daten eines Kunden auf eine externe Festplatte. Mit dem Programm Backup Maker von ASCOMP. Funktioniert wunderbar, nur wenn die externe Festplatte voll ist, bleibt die Fortschrittanzeige einfach stehen. Ohne Fehlermeldung. Der Kunde wusste nicht das die Platte voll ist.

Ich benötige also ein Skript das den Kunden informiert: auf der Platte sind nur noch xy Gb frei, bitte bereinigen sie den Datenträger. Also ähnlich wie die Meldung von Windows mit dem C Laufwerk. Wieviel noch frei ist sehr wichtig.

Es gibt wahrscheinlich auch eine bessere Lösung, ich weiß es nicht. Ich möchte eigentlich kein anderes Programm benutzen, wenn es nicht zwingend notwendig ist. Wenn es so nicht zu lösen ist.

Ich bendanke mich im vorraus für eure Unterstützung.

Gruß Marco

Content-Key: 45410

Url: https://administrator.de/contentid/45410

Printed on: April 23, 2024 at 14:04 o'clock

Member: miniversum
miniversum Nov 27, 2006 at 10:28:38 (UTC)
Goto Top
Wenn vorher bekannt ist wieviel Platz diese Sicherung braucht kann ja mit dem Dir C: Befehl in einer Batch Datei der noch freie Speicherplatz ermittelt werden. Ist er zu klein kommt eine Meldung ist er ausreichend startet das Backupprogramm.

miniversum
Member: Biber
Biber Nov 27, 2006 at 10:58:18 (UTC)
Goto Top
Moin marco,

Du kannst zwar per Batch (über DIR oder DIRUSE oder CHKDSK) an die Freespace-Angaben kommen, aber alle drei Varianten sind s...suboptimal.
- DIR formatiert die Anzeige des freien Platzes in Bytes--->ist albern
- ChkDsk ist vielleicht nicht erlaubt und stinkelangsam
- DirUse ist (in der M$-Variante) nichts, was man/frau freiwillig anfassen sollte.

Daher meine Empfehlung: ein kurzer VBS-Dreizeiler, der ggf. im Batch selbst erzeugt wird und als einzige Info den freien Platz in GByte zurückgibt.

Der VBS-Dreizeiler:
'...temporärer GetFreeSpace.vbs-Schnipsel  
Set FSO = CreateObject("scripting.FileSystemObject")        
Set myDrive = FSO.GetDrive(wscript.arguments(0))     
wscript.echo int(myDrive.freeSpace/(1024 *1024))

Diesen Code kannst Du in Deinem Batch mit
echo [Zeile-für-Zeile]>>%temp%\GetFreeSpace.vbs
erzeugen und rufst ihn dann aus dem Batch so auf:
for /f %%i in ('cscript //nologo %temp%\GetFreeSpace.vbs C:') do set "FS_C=%%i"  

...wobei der Parameter C: natürlich auch D:, E: ... sein kann.

Sorry, muss mich kurz fassen...ist Mittach jetzt.

Gruß
Biber
[Edit] Nachtrag:
Zwei Sachen sind mir noch in der Kantine eingefallen:
- die momentane Rückgabe ist natürlich in MByte und nicht in GByte... ggf. also noch einmal durch 1024 teilen.
- ich hätte lieber vor dem Rechner bleiben sollen anstatt das Betriebsrestaurant aufzusuchen *grusel*
[/Edit]