我的目标是拥有一个VBS文件,我可以将文本文件拖放到该文件上,然后过滤掉包含子字符串的文本文件中的行,然后将剩余的行写入新文件。 (不完整)代码如下:
Dim fso, oFile, iFile
Dim Arg
Dim curLine, foundMatch, FilteredLines()
Const READ = 1, WRITE = 2, APPEND = 8
ReDim Preserve FilteredLines(0)
Set fso=CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count > 0 Then
Arg = Trim(Wscript.Arguments(0))
Set iFile=fso.OpenTextFile(Arg, READ, true)
Do Until iFile.AtEndOfStream
curLine = iFile.ReadLine
foundMatch = InStr(curLine, "Threshold")
IF foundMatch = 0 Then
ReDim Preserve FilteredLines (UBound(FilteredLines) + 1)
FilteredLines(UBound(FilteredLines)) = curLine
'msgBox curLine
End If
Loop
iFile.Close
End If
Set oFile=fso.OpenTextFile("next.txt", WRITE, true) 'This is line 23
For Each Arg in FilteredLines
oFile.WriteLine(Arg)
Next
oFile.Close
问题是:如果我只是双击该文件,那么' next.txt'文件创建没有问题。如果我将文件拖放到此脚本上,那么“' If'声明似乎正确触发,但后来我收到以下错误:
Script: {path to script}
Line: 23 (notated in code)
Char: 1
Error: Permission Denied
Code: 800A0046
Source: Microsoft VBScript runtime error
所以我似乎可以让拖放解析工作或生成输出文件,但不能同时生成两者。我该如何解决这个问题? (这是我第一次使用VBScript。)
答案 0 :(得分:0)
已解决的问题: 显然命名输出文件“next.txt”没有目录,并且在接收拖放文件作为输入的上下文中导致它尝试写入我无法访问的某个目录。
我使用fso对象获取当前目录,并使用该目录限定“next.txt”,一切正常。