[英]How to loop through all the files in a directory
我的查询是如何遍历特定文件夹中的所有文件?
我有vba代码片段,该片段删除了“ .b64”文件的第一行和最后一行。 我想使用特定文件夹中的所有“ .b64”文件来完成相同的任务。 有人可以帮助我调整此代码以使其循环吗?
这是一个代码...
Sub delline()
Dim objFSO As Object
Dim objStream As Object
Dim sLines
Dim iNumberOfLines
Dim i
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objStream = objFSO.OpenTextFile("C:\Testing\test1.b64", 1)
sLines = Split(objStream.ReadAll, vbCrLf)
objStream.Close
iNumberOfLines = UBound(sLines)
If iNumberOfLines > 2 Then
Set objStream = objFSO.OpenTextFile("C:\Testing\test1.b64", 2)
For i = 1 To iNumberOfLines - 2
objStream.WriteLine sLines(i)
Next
objStream.Close
End If
Set objStream = Nothing
Set objFSO = Nothing
End Sub
谢谢! 插口
您可以使用Dir
功能。 举个例子:
ChDir "C:\MyDir"
nextfile = Dir("*.b64")
While (nextfile <> "")
delline nextfile
nextfile = Dir()
Wend
并声明delline
为
Sub delline(filename)
由于您已经在使用FileSystemObject ...
Dim oFile as File
Dim oFolder as Folder
If objFSO.FolderExists(<Your Path>) Then
Set oFolder = objFSO.GetFolder(<Your Path>)
For Each oFile In oFolder.Files
... YOUR CODE
Next
End If
您还可以在FSO中使用已声明的选项,如下所示。
Sub dellineallfilesinafolder()
Dim objFSO As Object
Dim objStream As Object
Dim objFil As Object ' File Object
Dim sLines
Dim iNumberOfLines
Dim i
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each objFil In objFSO.GetFolder("C:\Testing").Files
If LCase(objFSO.GetExtensionName(objFil.Path)) = "b64" Then
Set objStream = objFSO.OpenTextFile(objFil.Path, 1)
sLines = Split(objStream.ReadAll, vbCrLf)
objStream.Close
iNumberOfLines = UBound(sLines)
If iNumberOfLines > 2 Then
Set objStream = objFSO.OpenTextFile(objFil.Path, 2)
For i = 1 To iNumberOfLines - 2
objStream.WriteLine sLines(i)
Next
objStream.Close
End If
End If
Next objFil
Set objStream = Nothing
Set objFil = Nothing
Set objFSO = Nothing
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.