Deleting Blank lines from text file
Hi all,
I am trying to delete specific lines from the middle of a text file and move the contents at the bottom of the file upwards once the lines have been deleted, ie. delete the blank lines left by the deletion.
I have managed to code the deletion of the text but not the deletion of blank lines. Any ideas.
here is my code. Any advice on how to improve this would be good too.
Option Explicit
Dim objFSO, objFile, objReadFile, objWriteFile, objNewFile
Dim strContents, strIniFile, strNewContents
Const ForReading = 1
Const ForWriting = 2
strIniFile = "c:\program files\sybase\ini\sql.ini"
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Read contents of sql.ini
Set objFile = objFSO.GetFile(strIniFile)
If objFile.Size > 0 Then
Set objReadFile = objFSO.OpenTextFile(strIniFile, ForReading)
strContents = objReadFile.ReadAll
objReadFile.Close
'Remove Maui data from sql.ini contents
strNewContents = strContents
strNewContents = Replace(strNewContents,"[blahblah]","")
strNewContents = Replace(strNewContents,"blah","")
'Write contents back to sql.ini
Set objNewFile = objFSO.OpenTextFile(strIniFile, ForWriting)
objNewFile.write (strNewContents)
End If
The text file has contents both before and after the text i'm trying to delete.
Scotty
I am trying to delete specific lines from the middle of a text file and move the contents at the bottom of the file upwards once the lines have been deleted, ie. delete the blank lines left by the deletion.
I have managed to code the deletion of the text but not the deletion of blank lines. Any ideas.
here is my code. Any advice on how to improve this would be good too.
Option Explicit
Dim objFSO, objFile, objReadFile, objWriteFile, objNewFile
Dim strContents, strIniFile, strNewContents
Const ForReading = 1
Const ForWriting = 2
strIniFile = "c:\program files\sybase\ini\sql.ini"
Set objFSO = CreateObject("Scripting.FileSystemObject")
'Read contents of sql.ini
Set objFile = objFSO.GetFile(strIniFile)
If objFile.Size > 0 Then
Set objReadFile = objFSO.OpenTextFile(strIniFile, ForReading)
strContents = objReadFile.ReadAll
objReadFile.Close
'Remove Maui data from sql.ini contents
strNewContents = strContents
strNewContents = Replace(strNewContents,"[blahblah]","")
strNewContents = Replace(strNewContents,"blah","")
'Write contents back to sql.ini
Set objNewFile = objFSO.OpenTextFile(strIniFile, ForWriting)
objNewFile.write (strNewContents)
End If
The text file has contents both before and after the text i'm trying to delete.
Scotty
0 Comments
[ + ] Show comments
Answers (2)
Please log in to answer
Posted by:
WiseUser
19 years ago
I'm feeling generous today!!
sMyFile = Wscript.Arguments(0)
Msgbox bRemoveLines(sMyFile, "AppDeploy")
Msgbox bRemoveLines(sMyFile, "WiseUser")
Function bRemoveLines(sFile, sFindString)
Dim oFso, hReadFile, hWriteFile, sReadLine, hTemp, sTemp, sTempFile
bRemoveLines = False
Const iFORREADING = 1
Const iFORWRITING = 2
Const iTEMPFOLDER = 2
Set oFso = CreateObject("Scripting.FileSystemObject")
Set hTemp = oFso.GetSpecialFolder(iTEMPFOLDER)
sTemp = hTemp.Path
Set hTemp = Nothing
sTmpFile = sTemp & "\" & oFso.GetTempName
oFso.CopyFile sFile, sTmpFile, True
Set hReadFile = oFSO.OpenTextFile(sTmpFile, iFORREADING, True)
Set hWriteFile = oFSO.OpenTextFile(sFile, iFORWRITING, True)
Do Until hReadFile.AtEndofStream
sReadLine = Trim(hReadFile.ReadLine)
If InStr(LCase(sReadLine), LCase(sFindString)) = 0 AND sReadLine <> "" then
hWriteFile.WriteLine sReadLine
End If
Loop
hReadFile.Close
hWriteFile.Close
Set hReadFile = Nothing
Set hWriteFile = Nothing
bRemoveLines = True
End Function
I suggest you put the indentation back (lost during posting) to make it more readable.
If you find this function useful, hold on to it - you never know when you might need something similar again. I keep a library of functions I've written in the past so I can use them again. There's nothing worse than rewriting something you know full well you've written before.
Msgbox bRemoveLines(sMyFile, "AppDeploy")
Msgbox bRemoveLines(sMyFile, "WiseUser")
Function bRemoveLines(sFile, sFindString)
Dim oFso, hReadFile, hWriteFile, sReadLine, hTemp, sTemp, sTempFile
bRemoveLines = False
Const iFORREADING = 1
Const iFORWRITING = 2
Const iTEMPFOLDER = 2
Set oFso = CreateObject("Scripting.FileSystemObject")
Set hTemp = oFso.GetSpecialFolder(iTEMPFOLDER)
sTemp = hTemp.Path
Set hTemp = Nothing
sTmpFile = sTemp & "\" & oFso.GetTempName
oFso.CopyFile sFile, sTmpFile, True
Set hReadFile = oFSO.OpenTextFile(sTmpFile, iFORREADING, True)
Set hWriteFile = oFSO.OpenTextFile(sFile, iFORWRITING, True)
Do Until hReadFile.AtEndofStream
sReadLine = Trim(hReadFile.ReadLine)
If InStr(LCase(sReadLine), LCase(sFindString)) = 0 AND sReadLine <> "" then
hWriteFile.WriteLine sReadLine
End If
Loop
hReadFile.Close
hWriteFile.Close
Set hReadFile = Nothing
Set hWriteFile = Nothing
bRemoveLines = True
End Function
I suggest you put the indentation back (lost during posting) to make it more readable.
If you find this function useful, hold on to it - you never know when you might need something similar again. I keep a library of functions I've written in the past so I can use them again. There's nothing worse than rewriting something you know full well you've written before.
Posted by:
Scotty
19 years ago
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.