Vbscript 从几个.txt文件中读取一行,并将它们写入创建的文件中

Vbscript 从几个.txt文件中读取一行,并将它们写入创建的文件中,vbscript,Vbscript,我有一个相当简单的任务 有一个文件夹,其中包含多个具有不同扩展名的文件。我需要做一个脚本,它将找到这个文件夹中所有扩展名为.txt的文件,从每个文件中读取第一行,然后在新创建的文件中写入所有第一行 现在,我的结局是这样的: Option Explicit Dim fso Set fso = CreateObject("Scripting.FileSystemObject") Dim f, colFiles , objFile Dim tFolder, tFile Dim lineToCopy,

我有一个相当简单的任务

有一个文件夹,其中包含多个具有不同扩展名的文件。我需要做一个脚本,它将找到这个文件夹中所有扩展名为.txt的文件,从每个文件中读取第一行,然后在新创建的文件中写入所有第一行

现在,我的结局是这样的:

Option Explicit
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Dim f, colFiles , objFile
Dim tFolder, tFile
Dim lineToCopy, fileContents
Dim input, output

Set tFolder = fso.GetFolder("C:\Temp")
Set tFile = tFolder.CreateTextFile("test.txt", true) 

Set f = fso.GetFolder("D:\Folder")
Set colFiles = f.Files
    For Each objFile in colFiles
        If LCase(fso.GetExtensionName(objFile.name)) = "txt" Then
            Set input = fso.OpenTextFile(LCase(objFile.name))
            If Not input.AtEndofStream Then lineToCopy = input.ReadLine
            input.close
            output = fso.OpenTextFile(tFolder, True)
            output.WriteLine lineToCopy
            output.close
        End If
    Next

WScript.sleep 60000000
激活时,.vbs文件告诉我他无法从该行找到该文件:

Set input = fso.OpenTextFile(LCase(objFile.name))
我认为这是因为LCASE块不能将文件夹内容理解为.txt文件。我错在哪里?需要做些什么来解决这个问题

亲爱的,
Richard

将文件的完整.Path用于OpenTextFile或通过OpenAsTextStream获取流。使用tFile,而不是重复创建输出。删除所有高风险/高风险fat:

Option Explicit

Dim fso   : Set fso = CreateObject("Scripting.FileSystemObject")
Dim tFile : Set tFile = fso.CreateTextFile(fso.BuildPath(".\", "test.txt"))
Dim oFile

For Each oFile in fso.GetFolder("..\data").Files
    If LCase(fso.GetExtensionName(oFile.Path)) = "txt" Then
'      Dim input: Set input = fso.OpenTextFile(LCase(oFile.Path))
       Dim input: Set input = oFile.OpenAsTextStream()
       If Not input.AtEndofStream Then tFile.WriteLine input.ReadLine()
       input.Close
    End If
Next

tFile.Close

看来我找到了自己的决定:

Option Explicit
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Dim f, colFiles , objFile
Dim tFolder, tFile
Dim lineToCopy, readFile

Set tFolder = fso.GetFolder("C:\Temp")
Set tFile = tFolder.CreateTextFile("test.txt", true) 

Set f = fso.GetFolder("D:\Scripting Games 2008\Beginner")
Set colFiles = f.Files
    For Each objFile in colFiles
        If LCase(fso.GetExtensionName(objFile.name)) = "txt" Then
        REM Preceding passage finds all .txt files in selected folder
            Set readFile = objFile.OpenAsTextStream
            lineToCopy = ""
                Do Until lineToCopy <> "" Or readfile.atEndOfStream
                    lineToCopy = Trim(readFile.ReadLine)
                Loop
                REM Extracts first line of the text, if it is not empty
            tFile.WriteLine objFile.name & ": " & lineToCopy
        End If
    Next
选项显式
模糊fso
设置fso=CreateObject(“Scripting.FileSystemObject”)
Dim f、colFiles、objFile
模糊文件
Dim lineToCopy,readFile
设置tFolder=fso.GetFolder(“C:\Temp”)
设置tFile=tFolder.CreateTextFile(“test.txt”,true)
设置f=fso.GetFolder(“D:\Scripting Games 2008\初学者”)
设置colFiles=f.Files
对于colFiles中的每个objFile
如果LCase(fso.GetExtensionName(objFile.name))=“txt”,则
REM将查找所选文件夹中的所有.txt文件
设置readFile=objFile.OpenAsTextStream
lineToCopy=“”
直到lineToCopy“”或readfile.atEndOfStream
lineToCopy=Trim(readFile.ReadLine)
环
REM提取文本的第一行(如果不是空的话)
tFile.WriteLine objFile.name&“:”&lineToCopy
如果结束
下一个
不过,谢谢你的回答。我发现了一些有趣的解决办法,这些办法有时会有用的

亲爱的, 理查德