Created
December 16, 2014 11:24
-
-
Save Grimthorr/d17810f34cd361769ed0 to your computer and use it in GitHub Desktop.
Visual Basic script function to read a key value from an INI file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Function ReadIni( myFilePath, mySection, myKey ) | |
' This function returns a value read from an INI file | |
' | |
' Arguments: | |
' myFilePath [string] the (path and) file name of the INI file | |
' mySection [string] the section in the INI file to be searched | |
' myKey [string] the key whose value is to be returned | |
' | |
' Returns: | |
' the [string] value for the specified key in the specified section | |
' | |
' CAVEAT: Will return a space if key exists but value is blank | |
' | |
' Written by Keith Lacelle | |
' Modified by Denis St-Pierre and Rob van der Woude | |
Const ForReading = 1 | |
Const ForWriting = 2 | |
Const ForAppending = 8 | |
Dim intEqualPos | |
Dim objFSO, objIniFile | |
Dim strFilePath, strKey, strLeftString, strLine, strSection | |
Set objFSO = CreateObject( "Scripting.FileSystemObject" ) | |
ReadIni = "" | |
strFilePath = Trim( myFilePath ) | |
strSection = Trim( mySection ) | |
strKey = Trim( myKey ) | |
If objFSO.FileExists( strFilePath ) Then | |
Set objIniFile = objFSO.OpenTextFile( strFilePath, ForReading, False ) | |
Do While objIniFile.AtEndOfStream = False | |
strLine = Trim( objIniFile.ReadLine ) | |
' Check if section is found in the current line | |
If LCase( strLine ) = "[" & LCase( strSection ) & "]" Then | |
strLine = Trim( objIniFile.ReadLine ) | |
' Parse lines until the next section is reached | |
Do While Left( strLine, 1 ) <> "[" | |
' Find position of equal sign in the line | |
intEqualPos = InStr( 1, strLine, "=", 1 ) | |
If intEqualPos > 0 Then | |
strLeftString = Trim( Left( strLine, intEqualPos - 1 ) ) | |
' Check if item is found in the current line | |
If LCase( strLeftString ) = LCase( strKey ) Then | |
ReadIni = Trim( Mid( strLine, intEqualPos + 1 ) ) | |
' In case the item exists but value is blank | |
If ReadIni = "" Then | |
ReadIni = " " | |
End If | |
' Abort loop when item is found | |
Exit Do | |
End If | |
End If | |
' Abort if the end of the INI file is reached | |
If objIniFile.AtEndOfStream Then Exit Do | |
' Continue with next line | |
strLine = Trim( objIniFile.ReadLine ) | |
Loop | |
Exit Do | |
End If | |
Loop | |
objIniFile.Close | |
Else | |
WScript.Echo strFilePath & " doesn't exists. Exiting..." | |
Wscript.Quit 1 | |
End If | |
End Function |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment