none
asp查下所有目錄與子目錄下的文字 RRS feed

  • 問題

  • 請問一下要如何用asp程式去搜尋某個目錄下的所有的子目錄與所有的檔案

    如下的程式若我放在c:\www 目錄下,好像只能搜尋到c:\www的檔案,而它下面若還有子目錄都不會搜尋,要如何改才能讓它自動知道c:\www這個目錄下有多少層目錄與多少檔案,有這個屬性指令

                path= Server.MapPath("\")

                path= Server.MapPath(".")
     
                path= request.Form("path")


        Set F1SO = CreateObject("Scripting.FileSystemObject")
        if not F1SO.FolderExists(path) then exit sub
        Set f = F1SO.GetFolder(Path)
        Set fc2 = f.files
        For Each myfile in fc2
            If CheckExt(F1SO.GetExtensionName(path&"\"&myfile.name)) Then
                Call ScanFile(Path&Temp&"\"&myfile.name, "")
                SumFiles = SumFiles + 1
            End If
        Next
        Set fc = f.SubFolders
        For Each f1 in fc
            ShowAllFile path&"\"&f1.name
            SumFolders = SumFolders + 1
        Next
        Set F1SO = Nothing

    2011年5月6日 上午 07:33

解答

  • 使用 ASP 開發網頁者,請務必從微軟網站下載 Microsoft Script 線上手冊,例如這是線上手冊的一段摘錄:

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' GenerateAllFolderInformation
    ' 目的: 
    '  產生一個字串以敘述一個資料夾和所有檔案及子資料夾
    '  目前的情況。
    ' 指出以下 
    ' - Folder.Path
    ' - Folder.SubFolders
    ' - Folders.Count
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    Function GenerateAllFolderInformation(Folder)
    
      Dim S
      Dim SubFolders
      Dim SubFolder
      Dim Files
      Dim File
    
      S = "Folder:" & TabStop & Folder.Path & NewLine & NewLine
      Set Files = Folder.Files
    
      If 1 = Files.Count Then
       S = S & "There is 1 file" & NewLine
      Else
       S = S & "There are " & Files.Count & " files" & NewLine
      End If
    
      If Files.Count <> 0 Then
       For Each File In Files
         S = S & GenerateFileInformation(File)
       Next
      End If
    
      Set SubFolders = Folder.SubFolders
    
      If 1 = SubFolders.Count Then
       S = S & NewLine & "There is 1 sub folder" & NewLine & NewLine
      Else
       S = S & NewLine & "There are " & SubFolders.Count & " sub folders" _
       NewLine & NewLine
      End If
    
      If SubFolders.Count <> 0 Then
       For Each SubFolder In SubFolders
         S = S & GenerateFolderInformation(SubFolder)
       Next
       S = S & NewLine
       For Each SubFolder In SubFolders
         S = S & GenerateAllFolderInformation(SubFolder)
       Next
      End If
    
      GenerateAllFolderInformation = S
    
    End Function
    
    
    


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年5月6日 下午 03:42

所有回覆

  • 沒有自動,只有自己逐層搜尋。

    ASP.NET 1.1 以前也沒有自動,到了 ASP.NET 2.0 才有完整路徑搜尋。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年5月6日 下午 03:39
  • 使用 ASP 開發網頁者,請務必從微軟網站下載 Microsoft Script 線上手冊,例如這是線上手冊的一段摘錄:

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' GenerateAllFolderInformation
    ' 目的: 
    '  產生一個字串以敘述一個資料夾和所有檔案及子資料夾
    '  目前的情況。
    ' 指出以下 
    ' - Folder.Path
    ' - Folder.SubFolders
    ' - Folders.Count
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    Function GenerateAllFolderInformation(Folder)
    
      Dim S
      Dim SubFolders
      Dim SubFolder
      Dim Files
      Dim File
    
      S = "Folder:" & TabStop & Folder.Path & NewLine & NewLine
      Set Files = Folder.Files
    
      If 1 = Files.Count Then
       S = S & "There is 1 file" & NewLine
      Else
       S = S & "There are " & Files.Count & " files" & NewLine
      End If
    
      If Files.Count <> 0 Then
       For Each File In Files
         S = S & GenerateFileInformation(File)
       Next
      End If
    
      Set SubFolders = Folder.SubFolders
    
      If 1 = SubFolders.Count Then
       S = S & NewLine & "There is 1 sub folder" & NewLine & NewLine
      Else
       S = S & NewLine & "There are " & SubFolders.Count & " sub folders" _
       NewLine & NewLine
      End If
    
      If SubFolders.Count <> 0 Then
       For Each SubFolder In SubFolders
         S = S & GenerateFolderInformation(SubFolder)
       Next
       S = S & NewLine
       For Each SubFolder In SubFolders
         S = S & GenerateAllFolderInformation(SubFolder)
       Next
      End If
    
      GenerateAllFolderInformation = S
    
    End Function
    
    
    


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年5月6日 下午 03:42
  • 請問要如何執行,我將程式放在C:\www

    如下,但出現錯誤

    <%
    Path = "C:\www\test1\"
    Set F1SO = CreateObject("Scripting.FileSystemObject")
        'if not F1SO.FolderExists(Path) then exit sub
        Set Folder = F1SO.GetFolder(Path)
    Folder = Path



    Function GenerateFolderInformation(Folder)

       Dim S

       S = "Path:" & TabStop & Folder.Path
       S = S & NewLine & "Name:" & TabStop & Folder.Name
       S = S & NewLine & "Attribs:" & TabStop & ShowFileAttr(Folder)
       S = S & NewLine & "Created:" & TabStop & Folder.DateCreated
       S = S & NewLine & "Accessed:" & TabStop & Folder.DateLastAccessed
       S = S & NewLine & "Modified:" & TabStop & Folder.DateLastModified
       S = S & NewLine & "Size:" & TabStop & Folder.Size & NewLine

       GenerateFolderInformation = S

    End Function



    Function GenerateAllFolderInformation(Folder)

       Dim S
       Dim SubFolders
       Dim SubFolder
       Dim Files
       Dim File

       S = "Folder:" & TabStop & Folder.Path & NewLine & NewLine
       Set Files = Folder.Files

       If 1 = Files.Count Then
          S = S & "There is 1 file" & NewLine
       Else
          S = S & "There are " & Files.Count & " files" & NewLine
       End If

       If Files.Count <> 0 Then
          For Each File In Files
             S = S & GenerateFileInformation(File)
          Next
       End If

       Set SubFolders = Folder.SubFolders

       If 1 = SubFolders.Count Then
          S = S & NewLine & "There is 1 sub folder" & NewLine & NewLine
       Else
          S = S & NewLine & "There are " & SubFolders.Count & " sub folders" & NewLine & NewLine
       End If

       If SubFolders.Count <> 0 Then
          For Each SubFolder In SubFolders
             S = S & GenerateFolderInformation(SubFolder)
          Next
          S = S & NewLine
          For Each SubFolder In SubFolders
             S = S & GenerateAllFolderInformation(SubFolder)
          Next
       End If

       GenerateAllFolderInformation = S

    End Function





    GenerateAllFolderInformation Folder


    %>

    2011年5月9日 上午 08:54
  • 出現錯誤,就該把錯誤資訊貼上來。

    大家才能儘速的想辦法幫您解決您的問題。


    常用資源參考:
    小弟的blog: In 91,wiki: my wiki
    2011年5月9日 上午 09:57
    版主
  • 請確認執行權限。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年5月9日 下午 12:35