Vbscript 正在尝试搜索文件夹中的文件
我正在尝试创建我的第一个VBS脚本,但我迷路了。我需要能够在4个网络路径内搜索特定文本。基本上,这是4个单独的日志文件,只保存文本文件,没有子目录或任何东西。我想,如果文本是在任何一个网络路径中找到的,它只会使该路径上升,而不允许其他路径上升。文本文件的名称应为用户输入驱动 有人能给我指出正确的方向吗?还是帮我?我能够打开网络路径,但不知道如何做其余的:以下是我到目前为止所拥有的:代码工作。。但我必须说得非常具体。。我只想键入1234,然后它会找到该文件,但是文件名总是随机生成的,等等。。1234-02304-923734.txt或1234-932987-973294,因此我只需要搜索第一个1234,但我不知道其余的。我现在的做法是打开explore.exe,然后转到该路径,然后进行搜索,它将查找它Vbscript 正在尝试搜索文件夹中的文件,vbscript,Vbscript,我正在尝试创建我的第一个VBS脚本,但我迷路了。我需要能够在4个网络路径内搜索特定文本。基本上,这是4个单独的日志文件,只保存文本文件,没有子目录或任何东西。我想,如果文本是在任何一个网络路径中找到的,它只会使该路径上升,而不允许其他路径上升。文本文件的名称应为用户输入驱动 有人能给我指出正确的方向吗?还是帮我?我能够打开网络路径,但不知道如何做其余的:以下是我到目前为止所拥有的:代码工作。。但我必须说得非常具体。。我只想键入1234,然后它会找到该文件,但是文件名总是随机生成的,等等。。123
Dim Input
Input = InputBox("Enter beginning filename")
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists("\\servername\c$\Program Files (x86)\LOGS\") Then
If objFSO.FileExists("\\servername\c$\Program Files (x86)\LOGS\"& Input) Then
Wscript.Echo "Folder and file exist"
Else
Wscript.Echo "Folder exists, file doesn't"
End If
Else
Wscript.Echo "Folder does not exist"
End If
提前感谢您的帮助 swstrau118,
我想帮助你理解你的方法。首先,必须递归日志文件夹中的每个子文件夹。然后将找到的每个文件与用户输入的文件进行比较。找到文件后,可以将位置存储在变量中,直到搜索完成,然后将位置返回给用户。
我发现了一个有用的链接,不是在VB脚本中,而是一个我相信您可以遵循的链接。
如果您遇到问题,可以询问有关代码的特定问题
提示,在没有扩展名的情况下,输入每个文件名将允许您比较字符串以进行快速匹配
这里是我提到的技巧,不是在vb脚本中,而是按照您需要的内容。
这是一个vb脚本,但可能是visual basic本身,而不是脚本。
显示如何处理递归。这是一个递归函数。当它遇到一个文件夹时,它会调用自己
Sub GenerateFullHotkeyInFolder(Fldr)
on error resume next
set WshShell = CreateObject("WScript.Shell")
Set objShell = CreateObject("Shell.Application")
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dict=CreateDictionary()
Set FldrItems=Fldr.Items
For Each oFile in FldrItems
With oFile
If .IsFileSystem = true And .IsLink = true And .Type <> "Shortcut to MS-DOS Program" then
set lnk = .GetLink
If lnk.hotkey <> 0 then
Set fsop = fso.GetFile(.Path)
LnkName = "<b>" & fso.GetBaseName(fso.GetFile(.Path)) & "</b><br>" & fsop.ParentFolder.path & "\" & fso.GetBaseName(fso.GetFile(.Path)) & "." & fso.GetExtensionName(fso.GetFile(.Path))
HK=Dict.Item(lnk.hotkey AND 255)
If HK = "" then HK = "A reserved or OEM specific key"
Modkey =""
If (lnk.hotkey And 256) = 256 then Modkey = "Shift + "
If (lnk.hotkey And 512) = 512 then Modkey = ModKey + "Ctrl + "
If (lnk.hotkey And 1024) = 1024 then Modkey = ModKey + "Alt + "
If (lnk.hotkey And 2048) = 2048 then Modkey = ModKey + "Winkey + "
DiagVar = DiagVar & "<tr><td><b>" & ModKey & " " & HK & "</b></td><td><a class=TblURL onmouseover='MakeRed()' onmouseout='MakeBlack()' onclick='FindShortcut(" & Chr(34) & .path & Chr(34) & ")'>" & LnkName & "</a>" & "</td><td><a class=TblURL onmouseover='MakeRed()' onmouseout='MakeBlack()' onclick='FindShortcut(" & Chr(34) & lnk.path & Chr(34) & ")'>" & lnk.path & "</a></td></tr>" & vbcrlf
End If
ElseIf .IsFileSystem = true And .IsFolder = true then
GenerateFullHotkeyInFolder(.GetFolder)
End If
End With
Next
End Sub
这里有一些提示 您可以创建一个数组来保存要搜索的每个网络路径。 如果您只想测试文件名的开头,请对每个文件名使用Left函数,并将其与您的输入进行比较
' Create an array to hold each path to search...
Paths = Array("\\server1\c$", _
"\\server2\c$", _
"\\server3\c$", _
"\\server4\c$")
' Check each file in each path...
For Each Path In Paths
For Each File In objFSO.GetFolder(Path).Files
If StrComp(Left(File.Name, Len(Input)), Input, vbTextCompare) = 0 Then
WScript.Echo "Found " & File.Name & " at " & Path & "."
End If
Next
Next
即使我只搜索4个网络路径中的1个文件,这种方法是否有效?是的,正如我所理解的,这4个路径位于一个公共文件夹下。我建议递归公共文件夹下的所有文件夹,并避免将它们作为数组添加。