Pages: 1
Print
Author Topic: Script Example: Using the File System Object (FSO) to Obtain Drive Information  (Read 911 times)
Derek Read
Program Manager (XMetaL)
Administrator
Member

Posts: 1552



WWW
« on: July 20, 2010, 03:35:20 PM »

Product(s):
XMetaL Author, XMetaL Developer

Description:
You may find you need to gather information about a specific drive when writing a script for use with XMetaL Author. For example, you may wish to decide if there is enough space left to write out a particular file, or whether a particular user has access to a specific network share.

Legal:
* Licensed Materials - Property of JustSystems, Canada, Inc.
*
* (c) Copyright JustSystems Canada, Inc. 2010
* All rights reserved.
*
*-------------------------------------------------------------------
* The sample contained herein is provided to you "AS IS".
*
* It is furnished by JustSystems Corporation as a simple example and has not been
* thoroughly tested under all conditions. JustSystems Canada, Inc., therefore, cannot
* guarantee its reliability, serviceability or functionality.
*
* This sample may include the names of individuals, companies, brands and products
* in order to illustrate concepts as completely as possible. All of these names are
* fictitious and any similarity to the names and addresses used by actual persons or
* business enterprises is entirely coincidental.
*---------------------------------------------------------------------

Example:
The following JScript example demonstrates how to instantiate the Windows File System Object (FSO) to read information for the drive containing the current user's TEMP folder. It builds on information located in the following forum post that shows how to check the value of Windows System Variables to find out which folder is the user's TEMP folder: http://forums.XMetaL.com/index.php/topic,27.0.html

This is not meant to be a complete reference and may have omitted some variables. Please refer to Microsoft's documentation if you need to obtain the value for a setting not listed here.

Code:
//XMetaL Script Language JScript:
function getDriveInfo(drvPath)
{
   var fso, drv, s ="";
   fso = new ActiveXObject("Scripting.FileSystemObject");
   drv = fso.GetDrive(fso.GetDriveName(drvPath));
   s += "Specified Path: " + drvPath + "\n";
   s += "DriveLetter: " + drv.DriveLetter + "\n";
   switch (drv.DriveType)
   {
      case 0: t = "Unknown"; break;
      case 1: t = "Removable"; break;
      case 2: t = "Fixed"; break;
      case 3: t = "Network"; break;
      case 4: t = "CD-ROM"; break;
      case 5: t = "RAM Disk"; break;
   }
   s += "DriveType: " + t  + "\n";
   s += "SerialNumber: " + drv.SerialNumber  + "\n";
   s += "FileSystem: " + drv.FileSystem  + "\n";
   s += "IsReady: " + drv.IsReady  + "\n";
   if (drv.ShareName == "")
s += "ShareName: [not a share]\n";
   else
s += "ShareName: " + drv.ShareName  + "\n";
   s += "VolumeName: " + drv.VolumeName + "\n";
   s += "Path: " + drv.Path + "\n";
   s += "RootFolder: " + drv.RootFolder + "\n";
   s += "Total Size: " + drv.TotalSize / 1024 +" bytes" + "\n";
   s += "Free Space: " + drv.FreeSpace / 1024 + " bytes" + "\n";
   s += "Available Space: " + drv.AvailableSpace + " bytes" + "\n";
   fso = null;
   return s;
}

//Example: show drive information for drive containing user's TEMP folder
var wsh     = new ActiveXObject("Wscript.Shell");
var envVars = wsh.Environment("PROCESS");
var userTempDir = envVars.Item("TEMP");
Application.MessageBox(getDriveInfo(userTempDir),64);
wsh = null;

External References:
« Last Edit: July 20, 2010, 03:37:26 PM by Derek Read » Logged
Pages: 1
Print
Jump to: