我是一名学生,正在使用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文件上运行它都会添加一个
我该如何解决这个问题?
答案 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