Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VBScript
Expertise: Intermediate
Jul 25, 2003

Take a Quick Look at a File

The Windows Script Host (WSH) supports many useful features, including VBScript's FileSystemObject object and the ability to drag and drop filenames. You can drag and drop a data files icon onto the script (or a shortcut to the script) to see the first ten lines of a file, or you can click on it to get an input box. You can specify any range of lines if you use arguments in the input box. The code gets the requested lines, puts them in a temporary file, and opens the temp file in Notepad. This utility can come in handy when you want to take a quick look at the layout of lines in a large file.

You can download the WSH from Microsoft's Web site here. Be sure to download the latest release version if the shortcut doesnt activate with drag-and-drop. Save this code into a file with a VBS extension, create a shortcut on your desktop, then take a quick look at the files:


Dim sInputLine, sMain, s
Dim i, iP, iEndFileName
Dim fso, tf, f
Dim nStartPos, iLineCnt
Dim iPopupDelay
Dim varAr

' Edit for your system!
Const TempFile = "C:\Temp\temp.txt"

nStartPos = 1		' Default first line.
iLineCnt = 10		' Default number of lines to show.
iPopupDelay = 4 	' Default Popup display, in seconds.

Set objArgs = WScript.Arguments

' If drag and drop was used,
' the argument will be the filename.
If objArgs.Count > 0 Then
	sInputLine = objArgs(0)
Else
	sInputLine = InputBox( _
		"Enter full name of file:" & vbCrLf & vbCrLf _
		& "Arguments allowed after the file name:" & _
		vbCrLf & "     [number of lines to" & _
		"show] [line to start at]" & vbCrLf & _
		"Use single space for argument separator.", _
		"Display Ten Lines of a File", "C:\")
	sInputLine = Trim(sInputLine)
End If

' Clean up as we go.
Set objArgs = Nothing

' If the cancel button was clicked, exit.
If sInputLine = "" Then
	DisplayMsg "No file name entered."
	WScript.quit (0)
End If

' Get start of extension for parsing 
' reference point.
i = InstrRev(sInputLine, ".")

' If no extension, exit gracefully.
If i = 0 Then
	DisplayMsg "The filename " & sInputLine & _
		" has no extension."
	WScript.quit (0)
End If

' Check to see If there are arguments at End of 
' sInputLine
i = InStr(i, sInputLine, " ")

' first arg = iLineCnt
' second arg = nStartPos (optional)
If i > 0 Then
	iEndFileName = i - 1
	s = Trim(Mid(sInputLine, i))
	If Len(s) > 0 Then
		varAr = Split(s, " ")
		If UBound(varAr) > 0 Then nStartPos = _
			CLng(varAr(1))
		iLineCnt = CInt(varAr(0))
		s = ""
	End If
	sInputLine = Left(sInputLine, iEndFileName)
End If

' Use the scripting file system object to retrieve 
' file lines.
Set fso = WScript.CreateObject( _
	"Scripting.FileSystemObject")

' If the file doesn't exist, exit.
If Not (fso.FileExists(sInputLine)) Then
	DisplayMsg "The file " & sInputLine & _
		" does not exit."
	Set fso = Nothing
	WScript.quit (0)
End If

Set tf = fso.OpenTextFile(sInputLine)

' Read iLineCnt file lines starting with line 
' nStartPos
i = 1: iP = 0
Do While tf.AtEndOfStream <> True
	sMain = tf.ReadLine
	If i >= nStartPos Then
		s = s & sMain & vbCrLf
		iP = iP + 1
	End If
	i = i + 1
	If iP >= iLineCnt Then Exit Do
Loop

tf.Close

' Save file lines string to a temporary file.
Set f = fso.CreateTextFile(TempFile)
f.Write (s)
f.Close

' Use the script host shell method to open the 
' temporary file in editor.
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad " & TempFile

Set fso = Nothing
Set WshShell = Nothing

Sub DisplayMsg(sMsg)
	Set WshShell = _
		WScript.CreateObject("Wscript.Shell")
	WshShell.Popup sMsg, iPopupDelay, _
		"Exiting Windows Script Host", _
		vbOKOnly + vbInformation
	Set WshShell = Nothing
End Sub
Steve Worley
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap