I recently came across vbscript. I was a bit curious to see how this works. As a first step, I created a small batch file (“tom.bat”) that invokes a vbscript. This script reads as:
cscript C:\Users\TOM.VAN-MAANEN\tom.vbs "KINLW7D6LPVM1" exit %ERRORLEVEL%
This script shows how such vbscripts can be invoked. One may start a script from the command line with the command “cscript”. This command is followd by a scriptname and a parameter. The script is ” C:\Users\TOM.VAN-MAANEN\tom.vbs” and the parameter is “KINLW7D6LPVM1”. The script returns a runcode that can be displayed with exit %ERRORLEVEL%. As an example, I also provide the script:
On Error Resume Next
Const CONVERSION_FACTOR = 1024
Const ONE_SEC = 1000
If WScript.Arguments.Count = 0 Then
Wscript.Echo "Usage: tom.vbs server1 [server2] [server3] ..."
WScript.Quit
End If
For Each Computer In WScript.Arguments
Set objWMIService = GetObject("winmgmts://" & Computer)
Set colLogicalDisk = objWMIService.InstancesOf("Win32_LogicalDisk")
wscript.Echo colLogicalDisk.Count & " drives found on " & Computer
For i = 1 to 1
For Each objLogicalDisk In colLogicalDisk
wscript.Echo "There are " & int((objLogicalDisk.FreeSpace / (CONVERSION_FACTOR * CONVERSION_FACTOR * CONVERSION_FACTOR))) & _
" Gigabytes on " & " " & objLogicalDisk.DeviceID
Next
Wscript.Sleep ONE_SEC
Next
Next
What does this script do? This script checks the disk space on each drive on the computer “KINLW7D6LPVM1”. It uses existing objects that are available in a windows environment with the WMI service. A class within this object provides information on the drives. It provides information on the number of drives and the free space that is available. The information is gathered and exported in a loop that displays the information on each of the drives. I also created a loop to allow for a regular check on available diskspace. Within this loop a delay is included.
Another nice example is this vbs programme:
Const cAppend = 8
paramStr = Wscript.Arguments.Item(0)
if (paramStr = "ONZIN") then
paramFile = "C:\Users\TOM.VAN-MAANEN\test_list_parm.txt" '''''''''''''''BW parameter txt file for LASTSHIP DATE and others which run once a day
InboundFolder = "C:\Users\TOM.VAN-MAANEN\" '''''''''''''''BW TD folder path
logfile = "C:\Users\TOM.VAN-MAANEN\test_list_log.txt"
end if
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile(logfile, cAppend, True) 'open the text file for appending
if (trim(paramStr) = "") then
objLogFile.WriteLine paramStr & " file checking aborted, error in input parameter value"
set objFSO = nothing
WScript.Quit(1) ''''FAILURE
end if
IF objFSO.FileExists(paramFile) Then
Set fileList = objFSO.OpenTextFile(paramFile, 1) 'open the text file for reading only
i = 0
'''' ------------------- Missing file listing ----------------
Do While Not fileList.AtEndOfStream 'loop until the end of the file
strfilename = ""
strfilename = fileList.ReadLine
If (Not strfilename = "") then ''''check filename is not empty
If NOT (objFSO.FileExists(InboundFolder & strfilename)) then ''''check file exists in inbound folder
if (i =0) then
objLogFile.WriteLine "-------------------------------**** Missing file list *****----------------------------------"
end if
i = i + 1
objLogFile.WriteLine cstr(i) & ". " & strfilename
End If
End If
Loop '''' end loop for missing files
fileList.Close
If (i > 0) then '''' atleast some missing files, terminate
objLogFile.WriteLine " "
objLogFile.WriteLine "========================================================="
objLogFile.WriteLine "File list not complete in Landed folder for " & paramStr & " at " & Now
objLogFile.WriteLine "========================================================="
fileList.Close
objLogFile.Close
set objFSO = nothing
WScript.Quit(1) ''''FAILURE
End If
objLogFile.WriteLine " "
objLogFile.WriteLine "========================================================="
objLogFile.WriteLine "===== " & paramStr & " File checking process COMPLETED SUCCESSFULLY====" & Now
objLogFile.WriteLine "========================================================="
fileList.Close
objLogFile.Close
set objFSO = nothing
WScript.Quit(0) '''''SUCCESS
ELSE
objLogFile.WriteLine paramStr & " file checking Process terminated, parameter file is missing in scripts folder for " & paramStr
objLogFile.WriteLine "========================================================="
objLogFile.Close
set objFSO = nothing
WScript.Quit(1) ''''FAILURE
END IF
This script can be started with: cscript C:\Users\TOM.VAN-MAANEN\test_list_scr.vbs “ONZIN”. The idea in this script in that file is read that contains a list of file names. For each file name, it is checked as to whether such a file exits in a given directory. If that is not the case, such file name is added to an array. In a subsequent step, the list with file names that do appear in a given location are written to a file.