1. 程式人生 > >windows環境下全盤搜尋特定檔案

windows環境下全盤搜尋特定檔案

如果你想讓程式碼不消失,那就讓他自由,讓他存在很多FTP伺服器上。–linus

   想法很簡單,動機很齷齪,假如你手裡有一臺同學的電腦,你突然想知道這臺電腦裡有沒有小電影,那麼該怎麼辦,
   很簡單,給我3s執行以下指令碼就ok,程式碼如下:
set fso = createobject("scripting.filesystemobject")

dim l_content
dim sum_folder  '資料夾數量
dim sum_file    '檔案數量
sum_file = 0
sum_folder = 1

set disk = fso.Drives   '獲取所有的碟符,遍歷查詢
for each d in disk l_content = l_content & getfoldername(d, sum_folder, sum_file) next set fp = fso.createtextfile("C:\Users\Administrator\Desktop\find_file.txt") '列印到檔案中,路徑隨意改 fp.write l_content fp.close function getfoldername(path, sum_folder, sum_file) set l_folder = fso.getfolder(path) set
l_file = l_folder.Files for each file in l_file if LCase(right(file, 5)) = ".rmvb" then '判斷格式是否符合,當然這裡可以隨便改 getfoldername = getfoldername & path & "\" & file.name & vbCrlf sum_file = sum_file + 1 end if next set l_subfolder = l_folder.subfolders for
each folder in l_subfolder if folder.name <> "System Volume Information" then '這裡的判斷是為了避開沒有許可權的資料夾,避免出現“許可權不足“的錯誤” path = folder '注意folder是資料夾路徑,而不是名字 sum_folder = sum_folder + 1 getfoldername = getfoldername & getfoldername(path, sum_folder, sum_file) end if next end function
 程式碼編寫過程中,幾點小問題總結一下:
    *fso.Drives:是獲取碟符的意思,通常來說是C:,D:,E:,F:
    *sum_file:通過這個變數記錄搜尋到的檔案的數量。但是VBS的全域性變數和C語言的並不一樣,需要傳入函式才能改變其具體值。
    在子函式內部直接使用並不能改變值。sum-folder同理
    *子函式的兩個迴圈中,file變數就是檔案的名字,而folder是資料夾的路徑
    *`if folder.name <> "System Volume Information" then`
    `for each file in l_file` 這條語句會報錯,指令碼停止執行,於是把這個資料夾遮蔽掉。
    *msgbox:這個彈框只能列印1024個位元組,因此更多的內容會被擷取。
    *子函式getfoldername中的變數getfoldername是為了使這個函式具有返回值,不可替換為其他變數。
    *以此指令碼修改,可以做許多其他功能。