Ich versuche, eine Batchdatei zu erstellen, um die Gesamtgröße und den freien Speicherplatz des Laufwerks C: \ der Server abzurufen (lokal ausgeführtes Skript). Ich brauche auch, dass die Ausgabe leicht lesbar ist, damit Bytes nicht funktionieren. Daher kann ich eine Befehlszeile verwenden, die eine temporäre .vbs-Datei erstellt.
Das Folgende scheint zu funktionieren, aber die Formatierung / Mathematik ist nicht korrekt.
setlocal
for /f "tokens=6" %a in ('fsutil volume diskfree C: ^| find "of bytes"') do set diskspace=%a
echo wsh.echo FormatNumber(cdbl(%diskspace%)/1024, 0) > %temp%.\tmp.vbs
for /f %a in ('cscript //nologo %temp%.\tmp.vbs') do set diskspace=%a
del %temp%.\tmp.vbs
echo For example %diskspace%
Die obigen Befehle zeigen auch nur freien Speicherplatz an ... Ich möchte auch die Gesamtgröße ... Ich frage mich, ob der folgende Befehl besser zum Abrufen der Informationen geeignet ist:
WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:"
Beachten Sie auch, dass dies direkt in eine Eingabeaufforderung kopiert / eingefügt werden kann (keine Batchdatei - erzwungene Anforderungen). Ich habe die "%%" bereits aus dem obigen Code entfernt.
Hinweis: Muss nativ auf Server 2003+ ausgeführt werden (daher ist Powershell nicht verfügbar, ebenso wie alle Dienstprogramme von Drittanbietern).
quelle
Antworten:
Unter der Klausel " Keine Batchdatei - erzwungene Anforderungen"
cmd
könnte der nächste Einzeiler helfen:Ausgabe :
quelle
Mir ist klar, dass Sie gerade als VBS suchen, aber PowerShell kann dies sehr einfach tun:
In der ersten Zeile werden die Festplatteninformationen von WMI abgerufen (in diesem Beispiel nur C:), und es werden nur die Größen für freien Speicherplatz und Gesamtgröße ausgewählt.
Schreiben Sie in den nächsten beiden Zeilen die Größen für freien Speicherplatz und Gesamtgröße in die Konsole, formatiert in GB, wobei die Brüche abgeschnitten sind.
Beispielausgabe (wie sie ist):
quelle
In einer Batchdatei können Sie die Festplattengröße einer angegebenen Festplatte in GB mithilfe eines DiskPart-Skripts ermitteln. In diesem Beispiel setze ich den spezifischen Festplattenindex gemäß seinem Modellnamen (vorausgesetzt, es gibt nur einen ähnlichen im Computer). Ändern Sie die Zeichenfolge " SATA Disk " entsprechend dem Modell Ihres Laufwerks. Sie können den Modellnamen abrufen, indem Sie den Befehl " wmic diskdrive get Model, Index " in cmd ausführen .
Natürlich können Sie im Befehl wmic eine andere Eigenschaft der Festplatte verwenden - geben Sie wmic diskdrive get /? um eine Liste aller Festplatteneigenschaften zu erhalten, die Sie verwenden können.
quelle
Wenn Sie nur überprüfen müssen, ob auf dem Laufwerk genügend freier Speicherplatz vorhanden ist (um beispielsweise etwas zu installieren oder zu kopieren), können Sie die wmic-Abfrage wie folgt versuchen:
wmic LogicalDisk where "DeviceID='c:' and FreeSpace > 10737418240" get DeviceID 2>&1 ^ | find /i "c:" >nul || (echo not enough space&exit 1)
Dadurch wird die Ausführung von Batchdateien unterbrochen, wenn auf C weniger als 10 GB frei sind:
quelle
Teilen Sie durch 1024, um Kibyte zu erhalten (2 ^ 10). Teilen Sie durch 1024 x 1024, um Mibytes (2 ^ 20) zu erhalten. Teilen Sie durch 1024 x 1024 x 1024, um Gibytes (2 ^ 30) zu erhalten.
Windows nennt diese Einheiten aus historischen Gründen Kilobyte, Megabyte und Gigabyte. Ich denke mein Gehäuse ist richtig.
Also ändere deine Summen.
quelle