2013-04-08 98 views
0

我試圖循環遍歷文件夾中的所有文件,並只列出那些文件名中包含特定文本的文件。例如,當在文件夾X中移動新文件TEST.pdf時,如果該文件夾中已經有一個名爲Test.pdf的文件,則新文件應該重命名爲Test1.pdf等等。爲了做到這一點,我試圖找到所有包含單詞TEST的文件的計數。循環文件名

這是我到目前爲止的代碼:

For Each FoundFile As String In My.Computer.FileSystem.GetFiles(varFolderPath, FileIO.SearchOption.SearchTopLevelOnly, varFileName & "*") 
    If FoundFile.Contains(varFileName) Then                    
     Response.Write(FoundFile & "</br>") 
    End If 
Next 

可變varFileName的值被傳遞是TEST.pdf

目前,我有Test.pdf,文件夾中Test1.pdfTest2.pdf,但由於某些原因,這個代碼,而不是列出所有三個文件,只是表明我的迴應Test.pdf

如果我改變我的For Each環路:

For Each fileName As String In Directory.GetFiles(varFolderPath, varFileName & "*") 

話還是我得到的只是TEST.pdf相同的結果。爲什麼?

+4

你知道'Test1.pdf'和'Test2.pdf'不*包含字符串'Test.pdf'? – fvu 2013-04-08 21:28:31

+0

使用'ListBox'而不是'Response.Write(FoundFile&「
」)'。 – 2013-04-08 21:32:13

回答

2

目前我在文件夾中有Test.pdf,Test1.pdf和Test2.pdf,但由於某些原因,這段代碼沒有列出所有的三個文件,只是在response.write中顯示Test.pdf文件。

那很簡單。名稱「Test1.pdf」不包含「TEST.pdf」,即使您查看它不區分大小寫。

也許你應該分別匹配擴展名和非擴展名部分 - 檢查擴展名是否匹配文件名的第一部分以搜索文件名的第一部分開頭。所以像這樣:

Dim extension = Path.GetExtension(varFileName) 
Dim rest = Path.GetFileNameWithoutExtension(varFileName) 
If Path.GetExtension(FoundFile) = extension AndAlso _ 
    Path.GetFileNameWithoutExtension(FoundFile).StartsWith(rest) Then 
    Response.Write(FoundFile & "</br>") 
End If 
+0

謝謝大家的快速回復。是的,通過分隔文件名及其擴展名,代碼工作正常。 – user2221375 2013-04-08 21:54:46