Option Explicit Dim arrCommands, arrLines, arrPATH Dim blnFirstLink Dim i, intPos Dim objExec, objFSO, objHTMLFile, objRE, wshShell Dim strCommand, strDEVCON, strHTMLCode, strHTMLFile, strLine, strMsg, strOutput, strPATH, strScriptFile, strScriptVer, strVersion strScriptVer = "1.00" strMsg = "" If WScript.Arguments.Named.Count > 0 Then Syntax If WScript.Arguments.Unnamed.Count > 1 Then Syntax Set wshShell = CreateObject( "WScript.Shell" ) Set objExec = wshShell.Exec( "DEVCON.EXE Help" ) If objExec.ExitCode <> 0 Then strMsg = "ERROR: DEVCON not found, not in the current directory, nor in the PATH\n\n" Syntax End If Set objFSO = CreateObject( "Scripting.FileSystemObject" ) With objFSO If WScript.Arguments.Unnamed.Count = 1 Then If .FolderExists( .GetParentFolderName( WScript.Arguments.Unnamed(0) ) ) Then strHTMLFile = .GetAbsolutePathName( WScript.Arguments.Unnamed(0) ) Else strMsg = "ERROR: invalid path for HTML output file\n\n" Syntax End If Else strScriptFile = WScript.ScriptFullName strHTMLFile = .BuildPath( .GetParentFolderName( strScriptFile ), .GetBaseName( strScriptFile ) & ".html" ) End If End With strDEVCON = "" strVersion = "" strPATH = wshShell.ExpandEnvironmentStrings( wshShell.CurrentDirectory & ";%PATH%" ) arrPATH = Split( strPATH, ";" ) For i = 0 To UBound( arrPATH ) If Trim( arrPATH(i) ) <> "" Then If strDEVCON = "" Then With objFSO If .FileExists( .BuildPath( arrPATH(i), "DEVCON.EXE" ) ) Then strDEVCON = .BuildPath( arrPATH(i), "DEVCON.EXE" ) strVersion = .GetFileVersion( strDEVCON ) End If End With End If End If Next Set arrCommands = CreateObject( "System.Collections.ArrayList" ) strHTMLCode = "\n\n\nHelp for DEVCON " & strVersion & "\n\n" strHTMLCode = strHTMLCode & "\n\n
\n\n
\n\n

help for DEVCON " & strVersion & "

\n\n
"
strOutput    = objExec.StdOut.ReadAll
arrLines     = Split( strOutput, vbCrLf )
blnFirstLink = False
For i = 0 To UBound( arrLines )
	strLine = Escape( arrLines(i) )
	If InStr( arrLines(i), Space( 9 ) ) > 2 And Left( arrLines(i), 4 ) <> "help" And Left( arrLines(i), 1 ) <> "-" Then
		intPos     = InStr( strLine, " " )
		strCommand = Left( strLine, intPos - 1 )
		arrCommands.Add strCommand
		strLine = "" & strCommand & "" & Escape( Mid( strLine, intPos ) )
		If Not blnFirstLink Then
			strLine      = "\n" & strLine
			blnFirstLink = True
		End If
	End If
	strHTMLCode = strHTMLCode & "\n" & strLine
Next
arrCommands.Sort
strHTMLCode = SuperTrim( strHTMLCode ) & "
\n\n" strHTMLCode = strHTMLCode & "

Type DEVCON help command on the command line for detailed help on command.

\n\n" For Each strCommand In arrCommands Set objExec = wshShell.Exec( "DEVCON.EXE Help " & strCommand ) If objExec.ExitCode = 0 Then strHTMLCode = strHTMLCode & "

DEVCON " & strCommand & "

\n\n
"
		strHTMLCode = strHTMLCode & SuperTrim( Escape( objExec.StdOut.ReadAll ) )
		strHTMLCode = strHTMLCode & "
\n\n

Back to the top of the page

\n\n

 

\n\n" End If Next strHTMLCode = Replace( strHTMLCode & "
\n\n

 

\n\n

HTML page generated by devcon_help.vbs, Version " & strScriptVer & "
\nWritten by Rob van der Woude
\nhttp://www.robvanderwoude.com

\n\n
\n\n\n", "\n", vbCrLf ) Set objHTMLFile = objFSO.CreateTextFile( strHTMLFile, True, True ) objHTMLFile.Write( strHTMLCode ) objHTMLFile.Close wshShell.Run strHTMLFile, 1, False Abort 0 Sub Abort( intRC ) On Error Resume Next Set wshShell = Nothing Set objExec = Nothing Set objFSO = Nothing Set objRE = Nothing Set objHTMLFile = Nothing On Error Goto 0 WScript.Quit intRC End Sub Function Escape( strInput ) Dim strResult strResult = Replace( strInput, "&", "&" ) strResult = Replace( strResult, ">", ">" ) strResult = Replace( strResult, "<", "<" ) Escape = strResult End Function Function SuperTrim( strInput ) Dim strResult strResult = strInput Set objRE = New RegExp objRE.Pattern = "\s+$" If objRE.Test( strResult ) Then strResult = objRE.Replace( strResult, "" ) objRE.Pattern = "^[\n\r]+" If objRE.Test( strResult ) Then strResult = objRE.Replace( strResult, "" ) SuperTrim = strResult End Function Sub Syntax( ) strMsg = strMsg _ & "devcon_help.vbs, Version " & strScriptVer _ & "\nCreate an HTML help page for all commands for the current DEVCON version\n\n" _ & "Usage: devcon_help.vbs [ outputfile ]\n\n" _ & "Where: outputfile is the HTML file to be created (default: name\n" _ & " and location of this script, extension "".html"")\n\n" _ & "Note: DEVCON is a free Microsoft utility, part of the Windows Driver Kit:\n" _ & " https://www.microsoft.com/en-us/download/details.aspx?id=11800\n" _ & " See http://www.robvanderwoude.com/devcon.php for help on\n" _ & " getting it installed without the entire Windows Driver Kit.\n\n" _ & "Written by Rob van der Woude\nhttp://www.robvanderwoude.com" WScript.Echo Replace( strMsg, "\n", vbCrLf ) Abort 1 End Sub