drive.TotalFreeSpacenie działa dla mnie, ale drive.AvailableFreeSpacedziała
knocte
16
Wiem, że ta odpowiedź jest stara, ale zwykle musisz jej użyć, AvailableFreeSpacejak mówi @knocte. AvailableFreeSpacepodaje, ile faktycznie jest dostępne dla użytkownika (z powodu kwotowań). TotalFreeSpacewyświetla listę tego, co jest dostępne na dysku, niezależnie od tego, z czego może korzystać użytkownik.
Roy T.
Głosowałem za komentarzem @ RoyT, ponieważ poświęcił trochę czasu, aby wyjaśnić, dlaczego jeden jest zalecany od drugiego.
SoCalCoder
41
Działający fragment kodu wykorzystujący GetDiskFreeSpaceExlink from przez RichardOD.
// Pinvoke for API function
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
publicstaticexternboolGetDiskFreeSpaceEx(string lpDirectoryName,
outulong lpFreeBytesAvailable,
outulong lpTotalNumberOfBytes,
outulong lpTotalNumberOfFreeBytes);
publicstaticboolDriveFreeBytes(string folderName, outulong freespace)
{
freespace = 0;
if (string.IsNullOrEmpty(folderName))
{
thrownew ArgumentNullException("folderName");
}
if (!folderName.EndsWith("\\"))
{
folderName += '\\';
}
ulong free = 0, dummy1 = 0, dummy2 = 0;
if (GetDiskFreeSpaceEx(folderName, out free, out dummy1, out dummy2))
{
freespace = free;
returntrue;
}
else
{
returnfalse;
}
}
Wolałbym, żeby to wróciło, jak ... if (!GetDiskFreeSpaceEx(folderName, out free, out total, out dummy)) throw new Win32Exception(Marshal.GetLastWin32Error());. Całkiem wygodnie jest znaleźć kod tutaj.
Eugene Ryabtsev
2
Sprawdzam tylko, ale wydaje mi się, że „CameraStorageFileHelper” to artefakt wynikający z kopiowania i wklejania tego kodu z oryginału?
Andrew Theken
To nie musi się kończyć "\\". Może to być dowolna istniejąca ścieżka dir lub nawet po prostu C:. Oto moja wersja tego kodu: stackoverflow.com/a/58005966/964478
Alex P.
40
DriveInfo pomoże Ci z niektórymi z nich (ale nie działa ze ścieżkami UNC), ale naprawdę myślę, że będziesz musiał użyć GetDiskFreeSpaceEx . Prawdopodobnie możesz osiągnąć jakąś funkcjonalność dzięki WMI. GetDiskFreeSpaceEx wygląda na najlepszy wybór.
Są szanse, że prawdopodobnie będziesz musiał oczyścić swoje ścieżki, aby działał poprawnie.
using System;
using System.IO;
classTest
{
publicstaticvoidMain()
{
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
Console.WriteLine("Drive {0}", d.Name);
Console.WriteLine(" Drive type: {0}", d.DriveType);
if (d.IsReady == true)
{
Console.WriteLine(" Volume label: {0}", d.VolumeLabel);
Console.WriteLine(" File system: {0}", d.DriveFormat);
Console.WriteLine(
" Available space to current user:{0, 15} bytes",
d.AvailableFreeSpace);
Console.WriteLine(
" Total available space: {0, 15} bytes",
d.TotalFreeSpace);
Console.WriteLine(
" Total size of drive: {0, 15} bytes ",
d.TotalSize);
}
}
}
}
/*
This code produces output similar to the following:
Drive A:\
Drive type: Removable
Drive C:\
Drive type: Fixed
Volume label:
File system: FAT32
Available space to current user: 4770430976 bytes
Total available space: 4770430976 bytes
Total size of drive: 10731683840 bytes
Drive D:\
Drive type: Fixed
Volume label:
File system: NTFS
Available space to current user: 15114977280 bytes
Total available space: 15114977280 bytes
Total size of drive: 25958948864 bytes
Drive E:\
Drive type: CDRom
The actual output of this code will vary based on machine and the permissions
granted to the user executing it.
*/
Chociaż ten kod w rzeczywistości działa na wszystkich dyskach w systemie, nie spełnia wymagań OP dotyczących punktów montowania i punktów połączenia oraz udziałów ...
Adrian Hum
3
niesprawdzone:
using System;
using System.Management;
ManagementObject disk = new
ManagementObject("win32_logicaldisk.deviceid="c:"");
disk.Get();
Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes");
Console.WriteLine("Logical Disk FreeSpace = " + disk["FreeSpace"] + "
bytes");
Przy okazji jaki jest wynik wolnego miejsca na dysku na c: \ temp? otrzymasz miejsce wolne od c: \
Jak mówi Kenny, wolne miejsce dla dowolnego katalogu niekoniecznie jest tym samym, co wolne miejsce na dysku w katalogu głównym. Na pewno nie ma tego na moim komputerze.
Barry Kelly
3
Oto refaktoryzowana i uproszczona wersja odpowiedzi @sasha_gud:
Chociaż ten kod w rzeczywistości działa na wszystkich dyskach w systemie, nie spełnia wymagań OP dotyczących punktów montowania i punktów połączenia ...
Adrian Hum
2
Szukałem rozmiaru w GB, więc właśnie poprawiłem kod z Supermana powyżej, wprowadzając następujące zmiany:
Myślałem, że każdy może obliczyć GB mając bajty, ale pokazałeś, że było to błędne założenie. Ten kod jest nieprawidłowy, ponieważ dzielenie jest używane, longale funkcja zwraca double.
Qwertiy
2
Jak sugeruje ta odpowiedź i @RichardOD, powinieneś zrobić tak:
[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
staticexternboolGetDiskFreeSpaceEx(string lpDirectoryName,
outulong lpFreeBytesAvailable,
outulong lpTotalNumberOfBytes,
outulong lpTotalNumberOfFreeBytes);
ulong FreeBytesAvailable;
ulong TotalNumberOfBytes;
ulong TotalNumberOfFreeBytes;
bool success = GetDiskFreeSpaceEx(@"\\mycomputer\myfolder",
out FreeBytesAvailable,
out TotalNumberOfBytes,
out TotalNumberOfFreeBytes);
if(!success)
thrownew System.ComponentModel.Win32Exception();
Console.WriteLine("Free Bytes Available: {0,15:D}", FreeBytesAvailable);
Console.WriteLine("Total Number Of Bytes: {0,15:D}", TotalNumberOfBytes);
Console.WriteLine("Total Number Of FreeBytes: {0,15:D}", TotalNumberOfFreeBytes);
Chciałem podobnej metody dla mojego projektu, ale w moim przypadku ścieżki wejściowe pochodziły z lokalnych woluminów dysku lub klastrowych woluminów pamięci masowej (CSV). Więc zajęcia DriveInfo nie działały dla mnie. Pliki CSV mają punkt montowania pod innym dyskiem, zwykle C: \ ClusterStorage \ Volume *. Zauważ, że C: będzie innym woluminem niż C: \ ClusterStorage \ Volume1
Oto, co w końcu wymyśliłem:
publicstaticulongGetFreeSpaceOfPathInBytes(string path)
{
if ((new Uri(path)).IsUnc)
{
thrownew NotImplementedException("Cannot find free space for UNC path " + path);
}
ulong freeSpace = 0;
int prevVolumeNameLength = 0;
foreach (ManagementObject volume in
new ManagementObjectSearcher("Select * from Win32_Volume").Get())
{
if (UInt32.Parse(volume["DriveType"].ToString()) > 1 && // Is Volume monuted on host
volume["Name"] != null && // Volume has a root directory
path.StartsWith(volume["Name"].ToString(), StringComparison.OrdinalIgnoreCase) // Required Path is under Volume's root directory
)
{
// If multiple volumes have their root directory matching the required path,// one with most nested (longest) Volume Name is given preference.// Case: CSV volumes monuted under other drive volumes.int currVolumeNameLength = volume["Name"].ToString().Length;
if ((prevVolumeNameLength == 0 || currVolumeNameLength > prevVolumeNameLength) &&
volume["FreeSpace"] != null
)
{
freeSpace = ulong.Parse(volume["FreeSpace"].ToString());
prevVolumeNameLength = volume["Name"].ToString().Length;
}
}
}
if (prevVolumeNameLength > 0)
{
return freeSpace;
}
thrownew Exception("Could not find Volume Information for path " + path);
}
Chociaż ten kod może odpowiedzieć na pytanie, zapewnia dodatkowy kontekst dotyczący tego, dlaczego i / lub jak ten kod odpowiada, poprawia jego długoterminową wartość.
xiawi
var driveName = "C: \\";
Nime Cloud
-1
Miałem ten sam problem i zobaczyłem, że waruna manjula daje najlepszą odpowiedź. Jednak zapisywanie tego wszystkiego na konsoli nie jest tym, czego możesz chcieć. Aby usunąć ciąg z wszystkich informacji, użyj następującego
Chcę zauważyć, że możesz po prostu utworzyć kod komentarza wszystkich wpisów konsoli, ale pomyślałem, że byłoby miło, gdybyś to przetestował. Jeśli wyświetlisz je wszystkie po sobie, otrzymasz tę samą listę, co waruna majuna
Dysk C: \ Typ dysku: Stała Etykieta woluminu: System plików: NTFS Dostępne miejsce dla bieżącego użytkownika: 134880153600 bajtów Całkowita dostępna przestrzeń: 134880153600 bajtów Całkowity rozmiar dysku: 499554185216 bajtów
Napęd D: \ Typ napędu: CDRom
Dysk H: \ Typ dysku: Naprawiono Etykieta woluminu: HDD System plików: NTFS Wolne miejsce dla bieżącego użytkownika: 2000010817536 bajtów Całkowita dostępna przestrzeń: 2000010817536 bajtów Całkowity rozmiar dysku: 2000263573504 bajtów
Jednak teraz możesz uzyskać dostęp do wszystkich luźnych informacji w stringach
Odpowiedzi:
to działa dla mnie ...
using System.IO; private long GetTotalFreeSpace(string driveName) { foreach (DriveInfo drive in DriveInfo.GetDrives()) { if (drive.IsReady && drive.Name == driveName) { return drive.TotalFreeSpace; } } return -1; }
powodzenia!
źródło
drive.TotalFreeSpace
nie działa dla mnie, aledrive.AvailableFreeSpace
działaAvailableFreeSpace
jak mówi @knocte.AvailableFreeSpace
podaje, ile faktycznie jest dostępne dla użytkownika (z powodu kwotowań).TotalFreeSpace
wyświetla listę tego, co jest dostępne na dysku, niezależnie od tego, z czego może korzystać użytkownik.Działający fragment kodu wykorzystujący
GetDiskFreeSpaceEx
link from przez RichardOD.// Pinvoke for API function [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetDiskFreeSpaceEx(string lpDirectoryName, out ulong lpFreeBytesAvailable, out ulong lpTotalNumberOfBytes, out ulong lpTotalNumberOfFreeBytes); public static bool DriveFreeBytes(string folderName, out ulong freespace) { freespace = 0; if (string.IsNullOrEmpty(folderName)) { throw new ArgumentNullException("folderName"); } if (!folderName.EndsWith("\\")) { folderName += '\\'; } ulong free = 0, dummy1 = 0, dummy2 = 0; if (GetDiskFreeSpaceEx(folderName, out free, out dummy1, out dummy2)) { freespace = free; return true; } else { return false; } }
źródło
... if (!GetDiskFreeSpaceEx(folderName, out free, out total, out dummy)) throw new Win32Exception(Marshal.GetLastWin32Error());
. Całkiem wygodnie jest znaleźć kod tutaj."\\"
. Może to być dowolna istniejąca ścieżka dir lub nawet po prostuC:
. Oto moja wersja tego kodu: stackoverflow.com/a/58005966/964478DriveInfo pomoże Ci z niektórymi z nich (ale nie działa ze ścieżkami UNC), ale naprawdę myślę, że będziesz musiał użyć GetDiskFreeSpaceEx . Prawdopodobnie możesz osiągnąć jakąś funkcjonalność dzięki WMI. GetDiskFreeSpaceEx wygląda na najlepszy wybór.
Są szanse, że prawdopodobnie będziesz musiał oczyścić swoje ścieżki, aby działał poprawnie.
źródło
using System; using System.IO; class Test { public static void Main() { DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { Console.WriteLine("Drive {0}", d.Name); Console.WriteLine(" Drive type: {0}", d.DriveType); if (d.IsReady == true) { Console.WriteLine(" Volume label: {0}", d.VolumeLabel); Console.WriteLine(" File system: {0}", d.DriveFormat); Console.WriteLine( " Available space to current user:{0, 15} bytes", d.AvailableFreeSpace); Console.WriteLine( " Total available space: {0, 15} bytes", d.TotalFreeSpace); Console.WriteLine( " Total size of drive: {0, 15} bytes ", d.TotalSize); } } } } /* This code produces output similar to the following: Drive A:\ Drive type: Removable Drive C:\ Drive type: Fixed Volume label: File system: FAT32 Available space to current user: 4770430976 bytes Total available space: 4770430976 bytes Total size of drive: 10731683840 bytes Drive D:\ Drive type: Fixed Volume label: File system: NTFS Available space to current user: 15114977280 bytes Total available space: 15114977280 bytes Total size of drive: 25958948864 bytes Drive E:\ Drive type: CDRom The actual output of this code will vary based on machine and the permissions granted to the user executing it. */
źródło
niesprawdzone:
using System; using System.Management; ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid="c:""); disk.Get(); Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes"); Console.WriteLine("Logical Disk FreeSpace = " + disk["FreeSpace"] + " bytes");
Przy okazji jaki jest wynik wolnego miejsca na dysku na c: \ temp? otrzymasz miejsce wolne od c: \
źródło
Oto refaktoryzowana i uproszczona wersja odpowiedzi @sasha_gud:
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetDiskFreeSpaceEx(string lpDirectoryName, out ulong lpFreeBytesAvailable, out ulong lpTotalNumberOfBytes, out ulong lpTotalNumberOfFreeBytes); public static ulong GetDiskFreeSpace(string path) { if (string.IsNullOrEmpty(path)) { throw new ArgumentNullException("path"); } ulong dummy = 0; if (!GetDiskFreeSpaceEx(path, out ulong freeSpace, out dummy, out dummy)) { throw new Win32Exception(Marshal.GetLastWin32Error()); } return freeSpace; }
źródło
Sprawdź to (jest to dla mnie działające rozwiązanie)
public long AvailableFreeSpace() { long longAvailableFreeSpace = 0; try{ DriveInfo[] arrayOfDrives = DriveInfo.GetDrives(); foreach (var d in arrayOfDrives) { Console.WriteLine("Drive {0}", d.Name); Console.WriteLine(" Drive type: {0}", d.DriveType); if (d.IsReady == true && d.Name == "/data") { Console.WriteLine("Volume label: {0}", d.VolumeLabel); Console.WriteLine("File system: {0}", d.DriveFormat); Console.WriteLine("AvailableFreeSpace for current user:{0, 15} bytes",d.AvailableFreeSpace); Console.WriteLine("TotalFreeSpace {0, 15} bytes",d.TotalFreeSpace); Console.WriteLine("Total size of drive: {0, 15} bytes \n",d.TotalSize); } longAvailableFreeSpaceInMB = d.TotalFreeSpace; } } catch(Exception ex){ ServiceLocator.GetInsightsProvider()?.LogError(ex); } return longAvailableFreeSpace; }
źródło
zobacz ten artykuł !
zidentyfikuj parametr UNC lub ścieżkę dysku lokalnego, przeszukując indeks „:”
Jeśli jest to ŚCIEŻKA UNC, możesz odwzorować ścieżkę UNC
kod do wykonania nazwa dysku jest mapowaną nazwą dysku <dysk mapowany UNC lub dysk lokalny>.
using System.IO; private long GetTotalFreeSpace(string driveName) { foreach (DriveInfo drive in DriveInfo.GetDrives()) { if (drive.IsReady && drive.Name == driveName) { return drive.TotalFreeSpace; } } return -1; }
usuń mapowanie po spełnieniu wymagań.
źródło
Szukałem rozmiaru w GB, więc właśnie poprawiłem kod z Supermana powyżej, wprowadzając następujące zmiany:
public double GetTotalHDDSize(string driveName) { foreach (DriveInfo drive in DriveInfo.GetDrives()) { if (drive.IsReady && drive.Name == driveName) { return drive.TotalSize / (1024 * 1024 * 1024); } } return -1; }
źródło
long
ale funkcja zwracadouble
.Jak sugeruje ta odpowiedź i @RichardOD, powinieneś zrobić tak:
[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetDiskFreeSpaceEx(string lpDirectoryName, out ulong lpFreeBytesAvailable, out ulong lpTotalNumberOfBytes, out ulong lpTotalNumberOfFreeBytes); ulong FreeBytesAvailable; ulong TotalNumberOfBytes; ulong TotalNumberOfFreeBytes; bool success = GetDiskFreeSpaceEx(@"\\mycomputer\myfolder", out FreeBytesAvailable, out TotalNumberOfBytes, out TotalNumberOfFreeBytes); if(!success) throw new System.ComponentModel.Win32Exception(); Console.WriteLine("Free Bytes Available: {0,15:D}", FreeBytesAvailable); Console.WriteLine("Total Number Of Bytes: {0,15:D}", TotalNumberOfBytes); Console.WriteLine("Total Number Of FreeBytes: {0,15:D}", TotalNumberOfFreeBytes);
źródło
Chciałem podobnej metody dla mojego projektu, ale w moim przypadku ścieżki wejściowe pochodziły z lokalnych woluminów dysku lub klastrowych woluminów pamięci masowej (CSV). Więc zajęcia DriveInfo nie działały dla mnie. Pliki CSV mają punkt montowania pod innym dyskiem, zwykle C: \ ClusterStorage \ Volume *. Zauważ, że C: będzie innym woluminem niż C: \ ClusterStorage \ Volume1
Oto, co w końcu wymyśliłem:
public static ulong GetFreeSpaceOfPathInBytes(string path) { if ((new Uri(path)).IsUnc) { throw new NotImplementedException("Cannot find free space for UNC path " + path); } ulong freeSpace = 0; int prevVolumeNameLength = 0; foreach (ManagementObject volume in new ManagementObjectSearcher("Select * from Win32_Volume").Get()) { if (UInt32.Parse(volume["DriveType"].ToString()) > 1 && // Is Volume monuted on host volume["Name"] != null && // Volume has a root directory path.StartsWith(volume["Name"].ToString(), StringComparison.OrdinalIgnoreCase) // Required Path is under Volume's root directory ) { // If multiple volumes have their root directory matching the required path, // one with most nested (longest) Volume Name is given preference. // Case: CSV volumes monuted under other drive volumes. int currVolumeNameLength = volume["Name"].ToString().Length; if ((prevVolumeNameLength == 0 || currVolumeNameLength > prevVolumeNameLength) && volume["FreeSpace"] != null ) { freeSpace = ulong.Parse(volume["FreeSpace"].ToString()); prevVolumeNameLength = volume["Name"].ToString().Length; } } } if (prevVolumeNameLength > 0) { return freeSpace; } throw new Exception("Could not find Volume Information for path " + path); }
źródło
Możesz spróbować tego:
var driveName = "C:\\"; var freeSpace = DriveInfo.GetDrives().Where(x => x.Name == driveName && x.IsReady).FirstOrDefault().TotalFreeSpace;
Powodzenia
źródło
Miałem ten sam problem i zobaczyłem, że waruna manjula daje najlepszą odpowiedź. Jednak zapisywanie tego wszystkiego na konsoli nie jest tym, czego możesz chcieć. Aby usunąć ciąg z wszystkich informacji, użyj następującego
Krok pierwszy: zadeklaruj wartości na początku
//drive 1 public static string drivename = ""; public static string drivetype = ""; public static string drivevolumelabel = ""; public static string drivefilesystem = ""; public static string driveuseravailablespace = ""; public static string driveavailablespace = ""; public static string drivetotalspace = ""; //drive 2 public static string drivename2 = ""; public static string drivetype2 = ""; public static string drivevolumelabel2 = ""; public static string drivefilesystem2 = ""; public static string driveuseravailablespace2 = ""; public static string driveavailablespace2 = ""; public static string drivetotalspace2 = ""; //drive 3 public static string drivename3 = ""; public static string drivetype3 = ""; public static string drivevolumelabel3 = ""; public static string drivefilesystem3 = ""; public static string driveuseravailablespace3 = ""; public static string driveavailablespace3 = ""; public static string drivetotalspace3 = "";
Krok 2: rzeczywisty kod
DriveInfo[] allDrives = DriveInfo.GetDrives(); int drive = 1; foreach (DriveInfo d in allDrives) { if (drive == 1) { drivename = String.Format("Drive {0}", d.Name); drivetype = String.Format("Drive type: {0}", d.DriveType); if (d.IsReady == true) { drivevolumelabel = String.Format("Volume label: {0}", d.VolumeLabel); drivefilesystem = String.Format("File system: {0}", d.DriveFormat); driveuseravailablespace = String.Format("Available space to current user:{0, 15} bytes", d.AvailableFreeSpace); driveavailablespace = String.Format("Total available space:{0, 15} bytes", d.TotalFreeSpace); drivetotalspace = String.Format("Total size of drive:{0, 15} bytes ", d.TotalSize); } drive = 2; } else if (drive == 2) { drivename2 = String.Format("Drive {0}", d.Name); drivetype2 = String.Format("Drive type: {0}", d.DriveType); if (d.IsReady == true) { drivevolumelabel2 = String.Format("Volume label: {0}", d.VolumeLabel); drivefilesystem2 = String.Format("File system: {0}", d.DriveFormat); driveuseravailablespace2 = String.Format("Available space to current user:{0, 15} bytes", d.AvailableFreeSpace); driveavailablespace2 = String.Format("Total available space:{0, 15} bytes", d.TotalFreeSpace); drivetotalspace2 = String.Format("Total size of drive:{0, 15} bytes ", d.TotalSize); } drive = 3; } else if (drive == 3) { drivename3 = String.Format("Drive {0}", d.Name); drivetype3 = String.Format("Drive type: {0}", d.DriveType); if (d.IsReady == true) { drivevolumelabel3 = String.Format("Volume label: {0}", d.VolumeLabel); drivefilesystem3 = String.Format("File system: {0}", d.DriveFormat); driveuseravailablespace3 = String.Format("Available space to current user:{0, 15} bytes", d.AvailableFreeSpace); driveavailablespace3 = String.Format("Total available space:{0, 15} bytes", d.TotalFreeSpace); drivetotalspace3 = String.Format("Total size of drive:{0, 15} bytes ", d.TotalSize); } drive = 4; } if (drive == 4) { drive = 1; } } //part 2: possible debug - displays in output //drive 1 Console.WriteLine(drivename); Console.WriteLine(drivetype); Console.WriteLine(drivevolumelabel); Console.WriteLine(drivefilesystem); Console.WriteLine(driveuseravailablespace); Console.WriteLine(driveavailablespace); Console.WriteLine(drivetotalspace); //drive 2 Console.WriteLine(drivename2); Console.WriteLine(drivetype2); Console.WriteLine(drivevolumelabel2); Console.WriteLine(drivefilesystem2); Console.WriteLine(driveuseravailablespace2); Console.WriteLine(driveavailablespace2); Console.WriteLine(drivetotalspace2); //drive 3 Console.WriteLine(drivename3); Console.WriteLine(drivetype3); Console.WriteLine(drivevolumelabel3); Console.WriteLine(drivefilesystem3); Console.WriteLine(driveuseravailablespace3); Console.WriteLine(driveavailablespace3); Console.WriteLine(drivetotalspace3);
Chcę zauważyć, że możesz po prostu utworzyć kod komentarza wszystkich wpisów konsoli, ale pomyślałem, że byłoby miło, gdybyś to przetestował. Jeśli wyświetlisz je wszystkie po sobie, otrzymasz tę samą listę, co waruna majuna
Dysk C: \ Typ dysku: Stała Etykieta woluminu: System plików: NTFS Dostępne miejsce dla bieżącego użytkownika: 134880153600 bajtów Całkowita dostępna przestrzeń: 134880153600 bajtów Całkowity rozmiar dysku: 499554185216 bajtów
Napęd D: \ Typ napędu: CDRom
Dysk H: \ Typ dysku: Naprawiono Etykieta woluminu: HDD System plików: NTFS Wolne miejsce dla bieżącego użytkownika: 2000010817536 bajtów Całkowita dostępna przestrzeń: 2000010817536 bajtów Całkowity rozmiar dysku: 2000263573504 bajtów
Jednak teraz możesz uzyskać dostęp do wszystkich luźnych informacji w stringach
źródło