使用拖放文件作为参数时,如何创建新的无关文件?

时间:2016-02-25 01:02:03

标签: file vbscript

我的目标是拥有一个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。)

1 个答案:

答案 0 :(得分:0)

已解决的问题: 显然命名输出文件“next.txt”没有目录,并且在接收拖放文件作为输入的上下文中导致它尝试写入我无法访问的某个目录。

我使用fso对象获取当前目录,并使用该目录限定“next.txt”,一切正常。