Interessante Frage. Mir ist nicht bekannt, dass die Größe auf dem Datenträgerwert eine Eigenschaft eines skriptfähigen Objekts ist. Sie können dies berechnen, indem Sie die Modulo-Byte-Größe pro Cluster ermitteln, diesen Modulo von der Dateigröße subtrahieren und dann die Cluster-Größe hinzufügen. (Edit: oder Aacini des effizientere Berechnung verwenden, die ich immer noch versuchen zu verstehen.)
@echo off
setlocal
for %%I in (Testfile.txt) do (
set "fs=%%~zI"
for /f %%J in (
'wmic volume where "driveletter='%%~dI'" get blocksize /value'
) do 2>nul set /a %%J
)
echo Size: %fs%
set /a ondisk = ((fs-1)/blocksize+1) * blocksize
echo Size on disk: %ondisk%
Viele Websites behaupten, dass fsutil fsinfo ntfsinfo DRIVE:
ist der beste Weg, um das Bytes pro Cluster zu erhalten. Es scheint, dass diese Methode mit Gefahren behaftet ist, mit verschiedenen Beschriftungen je nach Gebietsschema und unterschiedlicher Anzahl von Zeilen für verschiedene Windows-Versionen. Darüber hinaus erfordert, wie Marged sagt, fsutil
Elevation. Diese WMI-Methode scheint universeller zu funktionieren und erfordert keine Administratorrechte.
Dank JosefZ, Marged und Aacini für alle Ihre Eingabe!
Verwenden 'Bytes pro Cluster' (zum Beispiel 4096) statt' Bytes pro physischem Sector' (zum Beispiel 512). (Verifiziert auf meiner _tiny_ SSD). Dann 'set/a = platteninterne (fs/clus +1) * clus)' – JosefZ
Dank Josef! Ich war mir nicht sicher, welchen Wert ich verwenden sollte, da beide auf dem System, auf dem ich gerade arbeite, identisch sind. – rojo
'findstr/i/C: "Bytes pro Cluster"' beachten Sie die '/ C:' Schalter Bedeutung. Bearbeite meinen vorherigen Kommentar: Dann setze/a ondisk = (fs/clus +1) * clus' ohne nachzufolgen ')'. – JosefZ