我的任务很简单。
有一个文件夹,其中包含几个具有不同扩展名的文件。我需要制作一个脚本,该脚本将在此文件夹中找到所有扩展名为.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))
我想发生这种情况是因为IF LCASE <...>块无法将文件夹内容理解为.txt文件。我在哪里错了,解决该问题需要做什么?
理查德,您好
将文件的完整.Path用于OpenTextFile或通过OpenAsTextStream获取流。使用tFile而不是重复创建输出。删除所有危险/货运狂热脂肪:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句