Immediate Solutions


Automating Applications from the Command Line

Most Windows applications support some level of shell scripting. This was originally intended for backward compatibility with DOS batch files, but is slowly dying with the birth of automation objects. Controlling applications from the command line is extremely useful when you need to perform simple tasks from within DOS batch files or Windows shortcuts.

Scripting Windows XP/2003 Defrag

When a file or folder is created or modified, pieces of that file or folder are scattered throughout the hard disk. This is known as disk fragmentation. Although this behavior occurs naturally, fragmentation does slow down data access time. Reorganizing these files or folders contiguously improves performance and is known as defragmentation. Microsoft XP/2003 includes a scriptable defragmentation utility, defrag.exe. The command-line options are:

  • /A ”Analyzes the drive and displays a report

  • /F ”Forces defragmentation, event when space is low

  • / V ”Displays complete reports

Scripting a Windows XP/2003 System Defrag

The following command defrags the C: drive and displays a report when complete:

 DEFRAG C: /V 

Scripting Norton Antivirus 2003

Although Norton Antivirus 2003 is a Windows graphical antivirus scanner, it does provide support for being scripted from the command line. The basic syntax for command-line scripting is as follows :

 NAVW32.EXE path options 

Here, path is any drive, folder, file, or combination of these to be scanned; and options are any valid command-line switches passed to NAVW32.EXE. Here is a list of the available switches:

  • /A ”Scan all drives except drives A and B. Network drives will be scanned if the Allow Network Scanning option is selected.

  • /L ”Scan all local drives except drives A and B.

  • /S ”Scan all subfolders specified in the path.

  • /M option ”Enable or disable memory scanning. Here, option is + for enabling, and ˆ’ for disabling.

  • /MEM ”Scan only memory.

  • /B option ”Enable or disable boot sector scanning. Here, option is + for enabling, and - for disabling.

  • /BOOT ”Scan only boot sectors.

  • /NORESULTS ”Do not display scan results.

  • /DEFAULT ”Reset settings to default.

  • /HEUR: option ”Sets the heuristic scanning sensitivity. Here, option can be values 0 “4 where 4 is the highest and 0 is disabled.

Scripting FTP

FTP (File Transfer Protocol) is a common method for transferring files between two locations. Although you could use a third-party FTP client (such as CuteFTP), Microsoft FTP is a more than adequate file transfer tool that supports command-line switches, commands, and script files. FTP command line switches control how the FTP client starts. The most common command line switches are:

  • -i ”Interactive mode, turns off interactive prompting during multiple file transfers

  • -n ”Prevents automatic logon

  • -s: script ”Specifies an FTP script to run

  • -v ”Verbose mode, turns on transfer data statistics and responses

To start an FTP client in verbose and interactive more, start a command prompt and enter the following:

 ftp -v -i 

Once the FTP client is active, you can enter various commands to list, delete, put, retrieve and files. The most common FTP commands are:

  • ascii ”Selected by default, sets the file transfer type to ASCII (shar, uu)

  • binary ”Sets the file transfer site to binary (z, arc, tar, zip)

  • bye ”Terminates the current FTP session and exits the FTP program

  • cd directory ”Changes the directory on the remote system

  • close ”Terminates the current FTP session

  • delete file ”Deletes a remote file

  • get file ”Retrieves a single file from the remote system

  • lcd directory ”Changes the directory on the local system

  • mdelete files ”Deletes remote files

  • mget files ”Retrieves multiple files from the remote system

  • mput files ”Uploads local files to a remote system

  • open host ”Establishes a connection to the host name specified

  • password password ”Specifies the password for the account name specified

  • prompt ”Toggles interactive prompting

  • put file ”Uploads a local file to a remote system

  • user name ”Specifies the account name to connect to the remote system

Tip  

To see the available FTP switches, enter "FTP -?" at the command line.

Scripting an FTP Upload

A common administrative task is uploading daily files to an FTP server. To script an FTP upload, select StartRun and enter "FTP -I -S: scriptfile. "

Here, -I turns off prompting during multiple file copies; -S: specifies a script file to use; and scriptfile is the full path and file name of a script file that contains the following:

 OPEN ftpserver  Username Password  CD  ftpdirectory  LCD  filedirectory   MPUT  files   BYE 

Here, ftpserver is the server to connect to; username and password are the logon credentials; ftpdirectory is the directory to upload the files to on the FTP server; filedirectory is the local directory where the files reside; and files are the multiple files to upload (such as *.*, * .txt, daily .*).

Tip  

To upload a single file, change the MPUT command to PUT.

Scripting an FTP Download

A common administrative task is downloading files from an FTP server. To script an FTP download, select StartRun and enter "FTP -I -S: scriptfile. "

Here, -I turns off prompting during multiple file copies; -S: specifies a script file to use; and scriptfile is the full path and file name of a script file that contains the following:

 OPEN  ftpserver  Username Password CD  ftpdirectory  LCD  filedirectory  MGET *.* BYE 

Here, ftpserver is the server to connect to; username and password are the logon credentials; ftpdirectory is the directory to download files from an FTP server; and filedirectory is the local directory where the files reside.

Scripting an FTP Download of Norton Antivirus Update Files

Many administrators maintain a share that stores the latest version of antivirus updates and then point their user's antivirus program to the share. This ensures that the administrator can first test the update, as opposed to simply directing the user's antivirus to the vendor. To download Norton antivirus update files to a central share using FTP and shell scripting, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Select StartRun and enter " scriptfile .bat."

Here, scriptfile is the full path and file name of a script file that contains the following:

 @Echo Off Net Use Z: \  server  \  share  ftp -n -s:  ftpscript  >>  logfile  Net Use Z: /Delete 

Here, server is the system containing the network share to store the antivirus update files; logfile is the full path and file name of a text file to log the FTP transfer, and ftpscript is the full path and file name of a script file containing the following:

 open ftp.symantec.com user anonymous youremail@yourdomain.com lcd Z:\  cd \public\english_us_Canada\antivirus_definitions\ norton_antivirus\static  bin mget * bye 
Note  

The highlighted code above must be entered on one line.

Scripting an FTP Download of McAfee Antivirus Update Files

To download McAfee antivirus update files to a central share using FTP and shell scripting, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Select StartRun and enter " scriptfile .bat."

Here, scriptfile is the full path and file name of a script file that contains the following:

 @Echo Off Net Use Z: \  server  \  share  ftp -n -s:  ftpscript  >>  logfile  Net Use Z: /Delete 

Here, server is the system containing the network share to store the antivirus update files; logfile is the full path and file name of a text file to log the FTP transfer, and ftpscript is the full path and file name of a script file containing the following:

 open ftp.nai.com user anonymous  youremail@yourdomain.com  lcd Z:\dats  cd \pub\antivirus\datfiles.x  prompt bin mget * bye 
Note  

The script above obtains antivirus updates for McAfee VirusScan 4.x. You can change the highlighted code above to obtain updates for your specific version.

Scripting Control Panel Applets

CONTROL.EXE, located in your Windows directory, is essentially the Windows Control Panel. To open the Control Panel, select StartRun and enter "control." Using this executable, you can start any Control Panel applet.

Control Panel applets are stored as CPL (Control Panel) files. To call an applet, select StartRun and enter "control applet. " One CPL file can actually store multiple applets. To call various applets within one CPL file, select StartRun and enter "control applet , @ # ." Here, # is the number of the applet to call. If you do not specify an applet number, CONTROL.EXE will automatically open the first one (0).

For applets that contain multiple tabs, you can open the exact tab you want by selecting StartRun and entering "control applet , , # ." Here, # is the number of the tab to open. If you do not specify a tab number, CONTROL.EXE will automatically open the first one (0).

So, what's the big deal about starting a Control Panel applet? After you start an applet, you can use a send-keys utility to perform the task you want.

Note  

To find all the applets and functions on your system, search for CPL files and experiment opening the different applets and tabs.

Modifying Mouse Properties

Here is a quick example to show the use of scripting Control Panel applets combined with using send-keys. To change a mouse to use left-handed button properties, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and extract AutoIt , from http://www.hiddensoft.com, to the new directory.

  3. Select StartRun and enter " autoit2 scriptfile. "

Here, autoit2 is the complete path and name of the autoit executable, and scriptfile is a text file that contains the following:

 [SCRIPT] RUN=CONTROL MOUSE.CPL Mouse=~WINWAITACTIVE#!L{ENTER} 

Scripting Wizards and Dialog Boxes

RUNDLL32.EXE is a 32-bit command-line utility that allows you to call functions from DLL files designed to accept calls from it. You can incorporate these calls in your scripts and combine them with send-keys to complete specific tasks. Table 5.1 shows the most common RUNDLL32 calls.

Table 5.1: Wizards and dialog boxes.

Task

RUNDLL32 calls

Add new printer

RUNDLL32.EXE SHELL32.DLL, SHHelpShortcuts_RunDLL AddPrinter

Cascade windows

RUNDLL32.EXE USER.DLL,cascadechildwindows

Copy a floppy disk

RUNDLL32.EXE DISKCOPY.DLL,DiskCopyRunDll

Create new briefcase

RUNDLL32.EXE SYNCUI.DLL,Briefcase_Create

Create new dialup connection

RUNDLL32.EXE RNAUI.DLL,RnaWizard @1

Create new share

RUNDLL32.EXE NTLANUI.DLL,ShareCreate

Disable keyboard

RUNDLL32.EXE KEYBOARD,disable

Disable mouse

RUNDLL32.EXE MOUSE,disable

Disconnect network drive

RUNDLL32.EXE USER.DLL,wnetdisconnectdialog

Format a disk

RUNDLL32.EXE SHELL32.DLL,SHFormatDrive

Install new modem

RUNDLL32.EXE SHELL32.DLL,Control_RunDLL modem.cpl, ,add

Logoff Windows

RUNDLL32.EXE SHELL32.DLL,SHExitWindowsEx 0

Manage a share

RUNDLL32.EXE NTLANUI.DLL,ShareManage

Map network drive

RUNDLL32.EXE USER.DLL,wnetconnectdialog

Open fonts folder

RUNDLL32.EXE SHELL32.DLL, SHHelpShortcuts_RunDLL FontsFolder

Open printers folder

RUNDLL32.EXE SHELL32.DLL, SHHelpShortcuts_RunDLL PrintersFolder

Open with

RUNDLL32.EXE SHELL32.DLL,OpenAs_RunDLL extension

Print Test Page

RUNDLL32.EXE SHELL32.DLL, SHHelpShortcuts_RunDLL PrintTestPage

Reboot

RUNDLL32.EXE SHELL32.DLL,SHExitWindowsEx 2

Refresh

RUNDLL32.EXE USER.DLL,repaintscreen

Shut down Windows

RUNDLL32.EXE USER.DLL,ExitWindows

Shut down Windows

RUNDLL32.EXE SHELL32.DLL,SHExitWindowsEx 1

Shut down Windows (Force)

RUNDLL32.EXE KRNL386.EXE,exitkernel

Swap mouse buttons

RUNDLL32.EXE USER.DLL, swapmousebutton

Tile windows

RUNDLL32.EXE USER.DLL,tilechildwindows

Automating Applications through an Application Object

Most new applications include a scriptable automation object model, allowing user and other applications to script them.

Using Microsoft Internet Explorer as a Display Tool

Other than dialog boxes and a DOS window, Windows Script Host really doesn't have a method to display output to the user. You can use Microsoft Internet Explorer to display information to the user or to generate HTML documents. To display the contents of C:\TEMP in Microsoft Internet Explorer, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

 Set  FSO  = CreateObject("Scripting.FileSystemObject") Set  MSIE  = CreateObject("InternetExplorer.Application")  sDIR  = "C:\TEMP"  sTITLE  = "Generating Directory List ..." Set  objDIR  = GetFolder(sDIR) SetupMSIE  MSIE  .Document.Write "<HTML><TITLE>" &  sTitle  & _   "</TITLE><BODY bgcolor=#C0C0C0><FONT FACE=ARIAL>"  MSIE  .Document.Write "<B>Displaying the contents of " & _   '  sDIR  & ":</B><BR><BR><table border=0 width=100% " & _   "cellspacing=0 cellpadding=0>" GoSubFolders  objDIR MSIE  .Document.Write "</table><BR><B>End of List</B>" & _   "</FONT></BODY>" Sub SetupMSIE  MSIE  .Navigate "About:Blank"  MSIE  .ToolBar = False  MSIE  .StatusBar = False  MSIE  .Resizable = False   Do   Loop While  MSIE  .Busy  SWidth  =  MSIE  .Document.ParentWindow.Screen.AvailWidth  SHeight  =  MSIE  .Document.ParentWindow.Screen.AvailHeight  MSIE  .Width =  SWidth  /2  MSIE  .Height =  SHeight  /2  MSIE  .Left = (  SWidth  -  MSIE  .Width)/2  MSIE  .Top = (  SHeight  -  MSIE  .Height)/2  MSIE  .Visible = True End Sub Sub ListFiles (  objDIR  )     For Each  efile  in  objDIR  .Files  MSIE  .Document.Write "<tr><td>" &  efile  & "</td>" & _         "<td>&nbsp;</td><td align=right>" &  efile  .size & _         "</td></tr>"     Next End Sub Sub GoSubFolders (  objDIR  )   If  objDIR  <> "\System Volume Information" Then     ListFiles  objDIR  For Each  eFolder  in  objDIR  .SubFolders  MSIE  .Document.Write "<tr><td>" & _  efolder  & "</td><td>&lt;DIR&gt;</td><td " & _         "align=right>" &  efolder  .size & "</td></tr>"       GoSubFolders  eFolder  Next   End If End Sub 
Note  

You need to append the GetFolder routine, listed earlier in Chapter 4, to this script in order for it to run. In this example, the window will not be updated until the directory listing is complete.

Creating Detailed Reports in Microsoft Word

You can script Microsoft Word to create logs and reports through Windows Script Host. To delete all temp files from your system and record the actions in a Microsoft Word document, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

 Set  FSO  = CreateObject("Scripting.FileSystemObject") Set  WordApp  = CreateObject("Word.Application")  sDIR  = "C:\"  sEXT  = "TMP"  sTITLE  = "Deleting Files"  WordApp  .Documents.Add  WordApp  .Visible = True  WordApp  .Caption = sTITLE  WordApp  .Selection.Font.Bold = True  WordApp  .Selection.TypeText "Deletion Log:" & sEXT & _     " Files: "  WordApp  .Selection.InsertDateTime  WordApp  .Selection.Font.Bold = False  WordApp  .Selection.TypeText vblf & vblf Set objDIR = GetFolder(sDIR) GoSubFolders objDIR  WordApp  .Selection.Font.Bold = True  WordApp  .Selection.TypeText vblf & "**END OF LOG**" Sub MainSub (objDIR)   For Each efile in objDIR.Files     fEXT = FSO.GetExtensionName(efile.Path)     If LCase(fEXT) = LCase(sEXT) Then       DelFile efile     End If   Next End Sub Sub DelFile(sFILE)   On Error Resume Next   FSO.DeleteFile sFILE, True   If Err.Number <> 0 Then  WordApp  .Selection.TypeText "Error deleting: " & _       sFILE & vblf   Else  WordApp  .Selection.TypeText "Deleted: " & sFILE & vblf   End If End Sub 
Note  

You need to append the GetFolder routine, listed in Chapter 4, to this script in order for it to run.

Creating Detailed Spreadsheets in Microsoft Excel

You can script Microsoft Excel to create spreadsheets through Windows Script Host. To delete all temp files from your system and record the actions in a Microsoft Excel spreadsheet, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

 Set  FSO  = CreateObject("Scripting.FileSystemObject") Set  ExcelApp  = CreateObject("Excel.Application")  Row  = 1  Column  = 1  ExcelApp  .Workbooks.Add  ExcelApp  .Visible = True  sDIR  = "C:\"  sEXT  = "TMP"  sTITLE  = "Deleting Files"  ExcelApp  .caption =  sTITLE ExcelApp  .Range("A1").Select  ExcelApp  .Selection.Font.Bold = True  ExcelApp  .Cells(  Row,Column  ).Value = "Deletion Log:" &  sEXT  & _   " Files" Row = Row + 1 Set  objDIR  = GetFolder(  sDIR  ) GoSubFolders  objDIR ExcelApp  .Selection.Font.Bold = True  Row  = Row + 1  ExcelApp  .Cells(  Row,Column  ).Value = "**END OF LOG**" Sub MainSub (objDIR)   For Each  efile  in  objDIR  .Files  fEXT  =  FSO  .GetExtensionName(  efile  .Path)     If  LCase  (  fEXT  ) =  LCase  (  sEXT  ) Then       DelFile  efile  End If   Next End Sub Sub GoSubFolders (  objDIR  )   If  objDIR  <> "\System Volume Information" Then     MainSub  objDIR  For Each  eFolder  in  objDIR  .SubFolders       GoSubFolders  eFolder  Next   End If End Sub Sub DelFile(  sFILE  )   On Error Resume Next  FSO  .DeleteFile  sFILE  , True   If Err.Number <> 0 Then  ExcelApp  .Cells(  Row,Column  ).Value = "Error deleting: " & _  sFILE  Else  ExcelApp  .Cells(  Row,Column  ).Value = "Deleted: " &  sFILE  End If  Row  =  Row  + 1 End Sub 
Note  

You need to append the GetFolder routine, listed in Chapter 4, to this script in order for it to run.

Scripting the Windows Shell

Windows has its own automation object called shell.automation . Although you might assume that you can completely automate every Windows function, in reality you can control only a limited set of objects available to scripting. To access the Windows shell, you must instantiate the shell object as follows:

 Set  variable  = CreateObject("Shell.Application") 
Controlling System Windows

When an item is opened in Microsoft Windows, it is opened in a system window. The standard window controls include minimize and maximize functions. You can script these Windows commands and more through the Windows shell object. The following is a list of the window objects and their functions:

  • CascadeWindows ”Cascade open windows

  • MinimizeAll ”Minimize open windows

  • TileHorizontally ”Tile open windows horizontally

  • TileVertically ”Tile open windows vertically

  • UndoMinimizeAll ”Restore minimized windows

To call any of these methods , proceed as follows:

 Set  Shell  = CreateObject("Shell.Application") Shell.Method 
Browsing for Folders

Using the BrowseForFolder method, you can incorporate the common Browse For Folder Windows dialog box used in most Windows applications. To call the dialog box, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile ."

Here, scriptfile is the full path and file name of a script file that contains the following:

 Set  Shell  = CreateObject("Shell.Application") Set  Folder  = Shell.BrowseForFolder (  handle  , "  Title  ",  options  ,_  RootFolder  ) Wscript.Echo "FOLDER: " &  Folder  .Title & vblf & _       "PARENT: " &  Folder  .ParentFolder 

Here, RootFolder can be a directory path or a special folder constant.

Table 5.2 lists the special folder constants.

Table 5.2: Special folder constants.

Constant

Folder or Directory Path

&H0

All Users Desktop

&H2

All Users Program folder

&H3

Control Panel

&H4

Printers Folder

&H5

Personal Folder

&H6

Favorites Folder

&H7

Startup Folder

&H8

Recent Folder

&H9

SendTo Folder

&Ha

Recycle Bin

&Hb

Start Menu

&H10

Desktop Directory

&H11

Drives (My Computer)

&H12

Network Neighborhood

&H13

Fonts Folder

&H14

Templates Folder

&H15

Common Start Menu

&H16

Common Programs Folder

&H17

Common Programs Folder

&H18

Common Startup Folder

&H19

Common Desktop Directory

&H1a

Application Data Folder

&H1b

PrintHood Folder

&H1c

Local Application Data Folder

&H1d

Alt Startup Folder

&H1e

Common Alt Startup Folder

&H1f

Common Favorites Folder

&H20

Common Internet Cache Folder

&H21

Common Cookies Folder

&H22

History Folder

&H23

Common Application Data Folder

&H24

Windows Folder

&H25

System Folder

&H26

Program Files Folder

&H27

My Pictures Folder

&H28

Profile Folder

Exploring a Folder

To explore a folder through the shell automation object, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application")  Shell  .Explore  RootFolder  

Here, RootFolder can be a directory path or a special folder constant.

Opening a Folder

To open a folder through the shell automation object, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application")  Shell  .Open  RootFolder  

Here, RootFolder can be a directory path or a special folder constant.

Running a Control Panel Applet

The Control Panel contains various applets you can use to perform various tasks. These applets have .cpl extensions and reside in your system directory. To call a Control Panel applet through the shell automation object, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application")  Shell  .ControlPanelItem "  applet  .cpl" 
Calling System Dialog Boxes

System dialog boxes are windows that require user input, such as the Find Files or Run dialog box. You can call one of these dialog boxes within your script, and combine it with send-keys to perform regular user tasks. To call a system dialog box through the shell automation object, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application")  Shell  .SysDialog 

Here, SysDialog consists of the following methods:

  • FileRun ”Calls the StartRun dialog box

  • FindComputer ”Calls the StartFind/SearchComputer dialog box

  • FindFiles ”Calls the StartFind/SearchFile or Folders dialog box

  • SetTime ”Calls the Date/Time dialog box

  • ShutdownWindows ”Calls the StartShutdown dialog box

  • TrayProperties ”Calls the Tray Properties dialog box

Refreshing the Start Menu

To refresh the contents of the Start menu, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application")  Shell  .RefreshMenu 
Accessing the Taskbar and Start Menu Properties Page

To access the Taskbar and Start Menu properties page through the shell automation object, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application")  Shell  .TrayProperties 
Accessing the Date and Time Properties Page

To access the Date and Time properties page through the shell automation object, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application")  Shell  .SetTime 
Accessing the Find Files Properties Page

To access the Find Files properties page through the shell automation object, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application")  Shell  .FindFiles 
Ejecting a PC

To undock a notebook through the shell automation object, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application")  Shell  .EjectPC 
Suspending a Computer

Most laptops have a feature called suspend, used to place the computer in lower power mode when not in use. To suspend a computer through the shell automation object, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application")  Shell  .Suspend 
Connecting to a Folder Name Space

In Chapter 4, you learned how to connect to a folder using the GetFolder FileSystemObject method. To connect to a folder through shell automation, use the NameSpace method and proceed as follows:

 Set  Shell  = CreateObject("Shell.Application") Set  Folder  =  Shell  .NameSpace(  RootFolder  ) 
Getting File or Folder Details

Although Windows NT/9 x only stores basic file and folder information, Windows 2000/XP/2003 store many more pieces of information. You can use the folder object's GetDetailsOf method on either operating system to obtain information about the file or folder specified. To connect to a folder through shell automation, use the NameSpace method and proceed as follows:

 Set  Shell  = CreateObject("Shell.Application") Set  Folder  =  Shell  .NameSpace(  RootFolder  ) For Each  Item  in  Folder  .Items  Summary  = "Name: " &  Item  .Name & vblf   For  Count  = 1 to 37     On Error Resume Next  Detail  = Folder.GetDetailsOf(Item,Count)     If  Detail  <> "" Then  Summary  = Summary &  Folder  .GetDetailsOf(0,Count) & _               ": " &  Folder  .GetDetailsOf(  Item,Count  ) & vblf     End If   Next  Wscript.Echo Summary  Next 

Here, RootFolder can be a directory path or a special folder constant. The output of the script may appear similar to Figure 5.2.


Figure 5.2: The GetDetailsOf file and folder output.
Copying and Moving Files and Folders

Whenever you copy or move a file in Windows, graphical dialog boxes appear displaying progress meters and confirmation windows (see Figure 5.3).

click to expand
Figure 5.3: Windows file operating dialog box.

Although the FileSystemObject can perform file management operations, it does not display any of these dialog boxes. To use these dialog boxes in your scripts, you can use the shell automation object. To copy or move files and folders to another folder, proceed as follows:

 Set  Shell  = CreateObject("Shell.Application") Set  Folder  =  Shell  .NameSpace(  RootFolder  )  Folder  .  Method  "  Files  ",  Flags  

Here, RootFolder can be a directory path or a special folder constant; Method is the CopyHere or MoveHere folder method; Files are the files or folders to copy or move; and Flags are the optional parameters that control the file operation. You can concatenate multiple parameters using the + character.

Note  

You can use the FOF_SILENT flag to suppress the progress dialog box. For more information on the file operation flags, search Microsoft's Web site for SHFILEOPSTRUCT.

Accessing the Context Menu

Every time you right-click on a file (on a right-handed mouse), you call the context menu. This menu is full of tasks added to the menu by the system, the media, and any programs you may have installed (see Figure 5.4).


Figure 5.4: Windows context menu.

You can access these tasks by clicking on them or entering the quick key combination (ALT+the underlined letter). Through shell automation, you activate any of these tasks:

 Set  Shell  = CreateObject("Shell.Application") Set  Folder  =  Shell  .NameSpace("  RootFolder  ") Set  File  =  Folder  .ParseName("  File  ")  File  .InvokeVerb("  Task  ") 

Here, RootFolder can be a directory path or a special folder constant; File is any file within the RootFolder ; and Task is any task listed in the context menu.

There are two important things to note about the InvokeVerb Task . The first is that if the task contains a quick key, you must precede that letter with an ampersand (&). For example, to run the Open task for Figure 5.4, you would enter "&Open." The second is that if the command pulls up a system window (such as a properties window), that window will close as soon as the script ends.

Automating Applications through Send-Keys

Some applications have been specifically designed without commandline options or automation object models. Without a scriptable back door to send commands to, another alternative to scripting the unscriptable is by using send-keys.

Scripting a Windows 2000 Drive Defrag

Windows 2000 includes a special, slimmed-down version of Executive Software's Diskeeper, made specifically for Windows 2000. Unlike Windows XP/2003 defrag, the Windows 2000 defrag utility does not include the scripting capabilities. To script a Windows 2000 drive defrag, proceed as follows:

  1. Download and install AutoIt, from http://www.hiddensoft.com.

  2. Select StartRun and enter " autoit2 scriptfile ."

Here, autoit2 is the complete path and name of the autoit executable, and scriptfile is a text file that contains the following:

 Run,  defragmmc  Winwaitactive, Disk Defrag Send, {ALTDOWN}A{ALTUP}D Winwaitactive, Defragmentation Complete Send, {TAB}{ENTER} Winwaitactive, Disk Defrag Send, {ALTDOWN}{F4}{ALTUP} 

Here, defragmmc is the full path to DFRG.MSC, usually found in the Winnt\system32 directory.

Changing Internet Explorer's Default Start Page

To change the default start page for Internet Explorer, proceed as follows:

  1. Download and install AutoIt, from http://www.hiddensoft.com.

  2. Select StartRun and enter " autoit2 scriptfile ."

Here, autoit2 is the complete path and name of the autoit executable, and scriptfile is a text file that contains the following:

 Run, control.exe inetcpl.cpl WinWaitActive, Internet Properties Send, http://www.jesseweb.com{Enter} 

Browsing the Internet

Whether you have an Internet provider that consistently disconnects you or a program that feeds off active Internet connections, you may need to have continually active Internet activity. To repeatably browse Internet sites, proceed as follows:

  1. Download and install AutoIt, from http://www.hiddensoft.com.

  2. Select StartRun and enter " autoit2 scriptfile ."

Here, autoit2 is the complete path and name of the autoit executable, and scriptfile is a text file that contains the following:

 SetTitleMatchMode, 2 Run, C:\Program Files\Internet Explorer\Iexplore.exe WinWaitActive, Microsoft Internet Explorer Repeat   Send, {ALTDOWN}D{ALTUP}www.jesseweb.com{Enter}     Sleep, 10000   Send, {ALTDOWN}D{ALTUP}www.fightclub.com{Enter}     Sleep, 10000   Send, {ALTDOWN}D{ALTUP}www.tylerandjacks.com{Enter}     Sleep, 10000   Send, {ALTDOWN}D{ALTUP}www.customtweaks.com{Enter}     Sleep, 10000   Send, {ALTDOWN}D{ALTUP} http://www.paraglyphpress.com{Enter}     Sleep, 10000 EndRepeat 

Clearing the Microsoft Internet Explorer Cache

Internet Explorer caches Web pages and previously entered usernames, passwords, and form entries. To delete these items using the AutoIt ActiveX control, proceed as follows:

  1. Download and install AutoIt, from http://www.hiddensoft.com.

  2. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is a text file that contains the following:

 Set  Shell  = WScript.CreateObject("WScript.Shell") Set  AIT  = WScript.CreateObject("AutoItX.Control")  Shell  .Run "control.exe inetcpl.cpl", 1, FALSE  AIT  .WinWaitActive "Internet Properties", ""  AIT  .Send "{ALTDOWN}F{ALTUP}"  AIT  .WinWaitActive "Delete Files", ""  AIT  .Send "{TAB}{ENTER}"  AIT  .WinWaitActive "Internet Properties", ""  AIT  .WinClose "Internet Properties", ""  Shell  .Run "control.exe inetcpl.cpl, ,2", 1, FALSE  AIT  .WinWaitActive "Internet Properties", ""  AIT  .Send "{ALTDOWN}U{ALTUP}"  AIT  .WinWaitActive "AutoComplete Settings", ""  AIT  .Send "{ALTDOWN}C{ALTUP}"  AIT  .WinWaitActive "Internet Options", ""  AIT  .Send "{ENTER}"  AIT  .WinWaitActive "AutoComplete Settings", ""  AIT  .Send "{ALTDOWN}L{ALTUP}"  AIT  .WinWaitActive "Internet Options", ""  AIT  .Send "{ENTER}{ESC}"  AIT  .WinWaitActive "Internet Properties", "  AIT  .Send "{ESC}" WScript.Quit 



Windows Admin Scripting Little Black Book
Windows Admin Scripting Little Black Book (Little Black Books (Paraglyph Press))
ISBN: 1933097108
EAN: 2147483647
Year: 2004
Pages: 89

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net