Sometimes you may want to check for the free disk space for multiple drives, even multiple computers in your network. If you are a server guy or someone with domain admin rights, you may want something more robust such as Lansweeper, Spiceworks, Open-AudIT, Zabbix, Nagios, OCS Inventory NG or the like to do an inventory. What if you are just a desktop admin?
The traditional way is to map the drives and jot down the free space manually, but that would not work if you have a large numbers of drives to check. I wrote the following code to accomplish the task, all you have to do is create a text file with one drive letters/UNC path per line and drag and drop it to the executable (alternatively, you can pass the text file’s filename as a parameter to the executable). The result will be presented in a Excel table.
#include <Excel.au3> If $CmdLine < 1 Then MsgBox(0, "Error", "Please provide text file as parameter.") Exit EndIf $file = FileOpen($CmdLine, 0) $lineNo = 1 If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf Local $oExcel = _ExcelBookNew() ;Create new book, make it visible If @error Then MsgBox(0, "Error", "Unable to create Excel instance.") Exit EndIf ;Writing the header _ExcelWriteCell($oExcel, "Disk", 1, 1) _ExcelWriteCell($oExcel, "Free Space", 1, 2) _ExcelWriteCell($oExcel, "Total Space", 1, 3) While 1 $line = FileReadLine($file) If @error = -1 Then ExitLoop $lineNo = $lineNo + 1 ;Write the disk name _ExcelWriteCell($oExcel, $line, $lineNo, 1) ;Write the disk free space _ExcelWriteCell($oExcel, (Round( (DriveSpaceFree($line)/1024 ),2) &" GB"), $lineNo, 2 ) ;Write the total disk space _ExcelWriteCell($oExcel, (Round( (DriveSpaceTotal($line)/1024 ),2) &" GB"), $lineNo, 3 ) Wend FileClose($file)
Feel free to download drivespace.zip from the link above.
For simplicity, not much error checking had been implemented and the code is provided as is.