使用Indusoft Web Studio中的VBScript删除txt文件中的行

时间:2014-02-17 16:19:12

标签: vbscript

我是一名学生,正在使用Indusoft Web Studio开展项目。

我一直使用IWS大约6个口,但我只使用了VBScript大约2个星期。

我需要删除txt文件中包含单词“DELETE”的所有行。 我找到了这个方法,并修复它来做我想要的但是我无法让它工作。

我正在尝试编辑的文件也被IWS使用,我试图通过给IWS另一个文件来让IWS放弃文件,但我不知道这是否有效。这就是我在代码的第一行和最后一行中所做的。

我的VBScript是错误的还是我需要在别处寻找我的错误源?。

注意前面带有$的代码是IWS函数或变量。

$TextGridName = "PlayListTemp.txt"

Dim strFileTemp, strFileRecipe , objFS , objTextFile , objFS1 , objTextFile2 , DeleteWord

strFileTemp = $GetAppPath() & "temp.txt"
strFileRecipe = $GetAppPath() & "PlayList.txt"

DeleteWord = "DELETE"

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFS.OpenTextFile(strFileRecipe)
Set objFS1 = objFS.CreateTextFile(strFileTemp,True)
objFS1.close
Set objTextFile2 = objFS.OpenTextFile(strFileTemp,8)


Do Until objTextFile.AtEndOfStream
    strLine = objTextFile.ReadLine
    If InStr(strLine,DeleteWord)> 0 Then
        strLine = Replace(strLine,DeleteWord,1)
      Else
    objTextFile2.writeline strLine
    End If

Loop

Set objTextFile = Nothing
Set objTextFile2 = Nothing

objFS.copyFile strFileTemp , strFileRecipe , True
objfs.DeleteFile strFileTemp 

Set objfs = Nothing
Set objfs1 = Nothing

$TextGridName = "PlayList.txt"

我试图不删除Temp文件,看它是否创建了一个,但看起来我不这样做。

你能帮助我吗?

感谢邦德这是我的新代码(我的意思是谢谢:))

$TextGridName = "PlayListTemp.txt"

Dim strFileTemp, strFileRecipe , objFS , objTextFile , objFS1 , objTextFile2 , DeleteWord , strLine 

strFileTemp = $GetAppPath() & "temp.txt"
strFileRecipe = $GetAppPath() & "PlayList.txt"

DeleteWord = "DELETE"

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFS.OpenTextFile(strFileRecipe)
Set objTextFile2 = objFS.CreateTextFile(strFileTemp, True)

Do Until objTextFile.AtEndOfStream
    strLine = objTextFile.ReadLine
    If InStr(strLine, DeleteWord) = 0 Then
       objTextFile2.WriteLine strLine
    End If 
Loop

objTextFile2.Close
objTextFile.Close

Set objTextFile = Nothing
Set objTextFile2 = Nothing

objFS.copyFile strFileTemp , strFileRecipe , True
objfs.DeleteFile strFileTemp 

Set objfs = Nothing
Set objfs1 = Nothing

$TextGridName = "PlayList.txt"

输出文件如下所示

਍਍吀䔀匀吀㄀Ⰰ㘀 ഀഀ
਍吀䔀匀吀㄀Ⰰ㘀 ഀ
഍ഀ
DELETE,60
਍ഀ

所有这些都写在txt文件的一行中

每次在空的txt文件上运行它都会添加一个਍

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

看起来我们在这里遇到了一些问题......

1. Set objFS = CreateObject("Scripting.FileSystemObject")
2. Set objTextFile = objFS.OpenTextFile(strFileRecipe)
3. Set objFS1 = objFS.CreateTextFile(strFileTemp,True)
4. objFS1.close
5. Set objTextFile2 = objFS.OpenTextFile(strFileTemp,8)

第1行:看起来不错。

第2行:通过传递1作为第二个参数,以“读取”模式打开文件。

第3 - 5行:看起来你正在尝试创建一个新的输出文件?只需使用: Set objTextFile2 = objFS.CreateTextFile(strFileTemp, True)并删除第3-5行。

然后,在你的循环中,你可以说:

If InStr(strLine, DeleteWord) = 0 Then
    ' Word not found on this line. Write line to new temp file.
    objTextFile2.WriteLine strLine
End If

不要忘记关闭这两个文件:

objTextFile2.Close
objTextFile.Close