批量提取文件名的方法 想做個(gè)內(nèi)容列表,,如果把文件名字一個(gè)一個(gè)復(fù)制,再粘貼太麻煩了,;可以利用DOS命令行(tree和dir)讀取某個(gè)文件夾下所有文件的名字(含后綴),,然后到出到TXT文本文件,。 1)tree——以樹(shù)型結(jié)構(gòu)顯示磁盤(pán)目錄結(jié)構(gòu)命令 TREE [drive:][path] [/F] [/A] > [存放的路徑] /F 顯示每個(gè)文件夾中文件的名稱(chēng);省略時(shí),,只顯示目錄,,不顯示目錄下的文件。 /A 使用 ASCII 字符,,而不使用擴(kuò)展字符,。 可以在命令行窗口敲「tree /?」或「help tree」看幫助 ①tree C:\WINDOWS\system32 /f > C:\mysystem32.txt 把C:\WINDOWS\system32下的所有目錄及文件結(jié)構(gòu)以樹(shù)狀結(jié)構(gòu)導(dǎo)出,以文本文件mysystem32保存在文件夾c:\下,。 ②如果要導(dǎo)出C盤(pán)的所有文件結(jié)構(gòu),,必須使用類(lèi)似下列命令「tree c:\ > c:\mycpan.txt」,而不能是「tree c: > c:\mycpan.txt」(盤(pán)符后面需要加反斜杠,,目錄后面不需要反斜杠),。 2)dir——顯示磁盤(pán)目錄命令 DIR [drive:][path][filename] [/P] [/W] [/A[[:]attributes]] [/O[[:]sortorder]] [/S] [/B] [/L] [/V] [/4] /P 當(dāng)查看的目錄太多,無(wú)法在一屏顯示完,,屏幕會(huì)一直往上卷,,不容易看清,加上/P參數(shù)后,,屏幕上會(huì)分面一次顯示23行的文件信息,,然后暫停,并提示,;Press any key to continue /W 只顯示文件名,,至于文件大小及建立的日期和時(shí)間則都省略(默認(rèn)顯示)。 ①直接輸入Dir命令后Enter鍵,,可查看當(dāng)前目錄下的資源列表,。 ②dir C:\WINDOWS\system32 /o:n > C:\mysystem32.txt 把C:\WINDOWS\system32下的所有文件名按字母排序?qū)С龅?/SPAN>C盤(pán)mysystem32文本文件中,此文件可導(dǎo)入excel作進(jìn)一步處理,。 ③也可以cd \WINDOWS\system32(切換到該目錄下),,再輸入:dir >> mysystem32.txt 3)CD或CHDIR——(Change Directory)切換當(dāng)前目錄命令 CD[盤(pán)符:][路徑名][子目錄名] ①如果省略路徑和子目錄名則表示在當(dāng)前目錄進(jìn)行操作; ②返回上級(jí)目錄cd ..(兩點(diǎn)) ③返回根目錄即盤(pán)符cd \(反斜杠) ④如你當(dāng)前是在c:盤(pán)下,,要到d:盤(pán),,只需鍵入d:回車(chē)就行了。 ⑤cd windows→進(jìn)入當(dāng)前目錄下的windows文件夾,;cd \windows→進(jìn)入當(dāng)前根目錄的下一級(jí)的windows目錄中,。 【DOS其它輔助命令】 cls:清屏; Exit:退出,; help [DOS命令],;(等于命令幫助參數(shù):[DOS命令]/?) 【DOS下特殊符號(hào)】 .(一點(diǎn)):代表當(dāng)前文件夾; ..(兩點(diǎn)):代表當(dāng)前文件夾的上級(jí)文件夾,; 正斜杠/后面DOS命令的參數(shù),,反斜杠\后加的是路徑(有區(qū)別于網(wǎng)絡(luò)路徑),。互聯(lián)網(wǎng)時(shí)代,,除了URL中要用到斜杠外,,其他地方很少見(jiàn)到它的身影。 【DOS常用快鍵鍵】 ESC:清除當(dāng)前命令行,; Ctrl+M:表示回車(chē)確認(rèn)鍵,; Alt+F7:清除所有曾經(jīng)輸入的命令歷史記錄; Alt+PrintScreen:截取屏幕上當(dāng)前命令窗里的內(nèi)容,; “↑”或“↓”:重復(fù)輸入已經(jīng)輸入過(guò)的命令,; F3:自動(dòng)輸入上次執(zhí)行過(guò)的命令。 【DOS下復(fù)制粘貼】 DOS下不能直接復(fù)制粘貼,,「Ctrl+C」和「Ctrl+V」不起作用,,右鍵菜單中包括“標(biāo)記”、“復(fù)制”,、“粘貼”等命令,;也可以先在記事本中寫(xiě)好,將其粘貼到cmd.exe程序中,。 其他方法 1)若是音樂(lè)文件,,可將音樂(lè)文件拖進(jìn)千千靜聽(tīng)等播放軟件,然后另存為播放列表,。此列表用記事本打開(kāi)即可查看文件名清單,。 2)拖把更名器 文件→導(dǎo)出當(dāng)前文件列表(默認(rèn)不顯示文件后綴名,選型-設(shè)置-同時(shí)導(dǎo)出文件擴(kuò)展名) 3)文件名提取工具/_\ 一個(gè)超級(jí)實(shí)用的傻瓜工具,,綠色軟件,,無(wú)須安裝,只需鼠標(biāo)一點(diǎn)即可實(shí)現(xiàn)對(duì)磁盤(pán)某目錄下的文件進(jìn)行文件名一次批量提取,。 寫(xiě)了一小部分,,可以獲取文件夾下所有文件名稱(chēng),,路徑,大小,,創(chuàng)建日期,不知道能否對(duì)你有幫助,。 1.添加VBA代碼,,選擇新插入的模塊后,插入以下代碼 Sub getpath() Range("A2:C1000").ClearContents '清空A2:C1000列 On Error Resume Next Dim shell As Variant Set shell = CreateObject("Shell.Application") Set filePath = shell.BrowseForFolder(&O0, "選擇文件夾", &H1 + &H10, "") '獲取文件夾路徑地址 Set shell = Nothing If filePath Is Nothing Then '檢測(cè)是否獲得有效路徑,,如取消直接跳出程序 Exit Sub Else gg = filePath.Items.Item.Path End If Set obj = CreateObject("Scripting.FileSystemObject") '定義變量 Set fld = obj.getfolder(gg) '獲取路徑 For Each ff In fld.Files '遍歷文件夾里文件 m = m + 1 Cells(m + 1, 1) = ff.Name Cells(m + 1, 2) = ff.Path Cells(m + 1, 3) = ff.Size Cells(m + 1, 4) = ff.DateCreated Next End Sub 2.運(yùn)行宏(alt+F8),,宏的名稱(chēng)為getpath 實(shí)戰(zhàn):Excel VBA 實(shí)現(xiàn)讀取指定文件夾下全部文件名與文件夾名 標(biāo)簽: excel vba 宏 程序 自動(dòng) 讀取 文件夾名 文件名 文件屬性 it 分類(lèi): 數(shù)據(jù)模型 前日在網(wǎng)上搜索可以讀取指定文件夾下全部文件夾及文件名到EXCEL表格中的程序無(wú)果,,于是自己編了一個(gè),方便以后大家遇到同樣的問(wèn)題,。 相信大家和我一樣在管理公私文件時(shí)總是喜歡隨處亂放,,找尋起來(lái)只能利用Microsoft的搜索功能了,而有時(shí)因?yàn)橥浟宋募踔琳叶颊也坏?,那種強(qiáng)迫感很恐怖的,。 首先看一下結(jié)果: 程序幫助調(diào)取了指定文件夾下面所有的文件名、文件后綴,、文件路徑,、文件夾名等等,如果您也寫(xiě)過(guò)VBA程序,,那么相信還會(huì)發(fā)揮您的所長(zhǎng)加入文件大小,、文件創(chuàng)建日期等等屬性豐富這個(gè)程序的。 · jove_loop_total: 總程序 · jove_loop_step1:清楚原有格式,、加入標(biāo)題行并調(diào)用下一個(gè)程序 · OkExcel(sPath As String):讀取文件與文件夾信息 · jove_loop_step2:循環(huán)讀取文件夾屬性的那些字段,,并讀取其內(nèi)部的文件們 --- 類(lèi)似蜘蛛爬 宏程序源碼: Sub jove_loop_total() 'D盤(pán)下全部文件夾及文件讀取用插件 Call jove_loop_step1 Call jove_loop_step2 MsgBox "Done" End Sub Sub jove_loop_step1() '加上標(biāo)題行 Columns("A:C").Clear Cells(1, 1) = "文件名" Cells(1, 2) = "類(lèi)型" Cells(1, 3) = "所在位置" Dim jove_address As String jove_address = ThisWorkbook.Path Call OkExcel(jove_address & "\") End Sub Sub OkExcel(sPath As String) Dim i As Long Dim sTxt As String i = Range("A65535").End(xlUp).Row sTxt = Dir(sPath, 31) Do While sTxt <> "" On Error Resume Next If sTxt <> ThisWorkbook.Name And sTxt <> "." And sTxt <> ".." And sTxt <> "081226" Then '忽略哪些隱藏系統(tǒng)文件夾 i = i + 1 Cells(i, 1) = "'" & sTxt If (GetAttr(sPath & sTxt) And vbDirectory) = vbDirectory Then '如果是文件夾 Cells(i, 2) = "文件夾" Cells(i, 3) = sPath & sTxt & "\" Cells(i, 1).Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 3) Else '如果是文件 Cells(i, 2) = "文件" Cells(i, 3) = sPath & sTxt Cells(i, 1).Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 3) End If End If sTxt = Dir Loop End Sub Sub jove_loop_step2() For i = 2 To 65535 On Error Resume Next If Cells(i, 2) = "文件夾" And Cells(i, 1) <> "Foxmail" And Cells(i, 1) <> "RECYCLER" And Cells(i, 1) <> "System Volume Information" And Cells(i, 1) <> "mail" Then '忽略哪些隱藏系統(tǒng)文件夾 Call OkExcel(Cells(i, 3)) End If Next End Sub 用VB取得一個(gè)文件夾內(nèi)所有文件的文件名
這個(gè)問(wèn)題其實(shí)可以歸結(jié)為遍歷吧!其時(shí)我是想做這樣一件事,,把一個(gè)文件夾下的指定類(lèi)型的所有文件名取出來(lái),,然后再分別打開(kāi)對(duì)應(yīng)文件,執(zhí)行其它操作,,顯然必須要用用VB取得一個(gè)文件夾內(nèi)所有文件的文件名,,于是我做了如下實(shí)驗(yàn),不過(guò)我是直接顯示在了text1.text中了,,同樣也可以存在數(shù)組中即可! 其實(shí)主要是用如下函數(shù)即可:(文件類(lèi)型可以自已改,,如“*.txt”) File1.Pattern = "*.*" Text1.Text = "" Dim i As Integer For i = 0 To File1.ListCount - 1 Text1.Text = Text1.Text & File1.List(i) & Chr(13) & Chr(10) Next i 代碼如下: Private Sub Command1_Click() File1.Pattern = "*.*" Text1.Text = "" Label1.Caption = "*********Sum=:" & File1.ListCount & " *********" Dim i As Integer For i = 0 To File1.ListCount - 1 Text1.Text = Text1.Text & File1.List(i) & Chr(13) & Chr(10) Next i End Sub Private Sub Command2_Click() Text1.Text = "" Label1.Caption = "********* *********" End Sub Private Sub Command3_Click() Unload Me End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub Form_Load() Text1.Text = "" Label1.Caption = "********* *********" End Sub VBA中利用Dir遍歷文件 如何知道代碼中函數(shù)的什么意思
選擇系統(tǒng)分類(lèi)的時(shí)候竟然找不到和VBA相關(guān)的,甚至連Office相關(guān)的項(xiàng)也沒(méi)有,,是不是因?yàn)檫@些方面太低級(jí)了很丟人哪,。 下面簡(jiǎn)單說(shuō)一下在用VBA開(kāi)發(fā)的時(shí)候如何遍歷某一目錄中的文件,從而對(duì)其進(jìn)行處理,。 現(xiàn)實(shí)應(yīng)用中,,常常會(huì)遇到這樣的情況,某個(gè)目錄下有大量的Excel數(shù)據(jù)文件,,現(xiàn)在需要對(duì)這些文件中的數(shù)據(jù)進(jìn)行批量處理?,F(xiàn)在的問(wèn)題就來(lái)了,由于每次生成的數(shù)據(jù)文件名稱(chēng)都不固定,,所以無(wú)法在程序中直接寫(xiě)死,。 其實(shí)通過(guò)VBA內(nèi)置的Dir函數(shù)可以解決這一問(wèn)題。 Sub DirTest() Do xlsName = Dir("D:\ExcelTest\*.xls") If xlsName = "" Then Exit Do End If Workbooks.Open Filename:="D:\ExcelTest\" & xlsName Workbooks(xlsName).Close savechanges:=False Kill "D:\ExcelTest\" & xlsName Loop End Sub 此處是假設(shè)需要處理的數(shù)據(jù)文件全部在“D:\ExcelTest\”目錄下,,實(shí)際應(yīng)用中可根據(jù)情況更改,。以下對(duì)此過(guò)程作一些簡(jiǎn)要說(shuō)明,。 1.先插入一個(gè)過(guò)程,并且加入Do……Loop循環(huán),,從而實(shí)現(xiàn)對(duì)所有的文件進(jìn)行處理 2.定義一個(gè)變量xlsName(名稱(chēng)可根據(jù)自己愛(ài)好隨便取,,但建議是好記的名稱(chēng),由于VBA可以不申明,,直接使用,,所以我這里偷懶,把定義的語(yǔ)句省略掉了,,默認(rèn)情況下執(zhí)行是沒(méi)有任何問(wèn)題的,。如果在VBA環(huán)境中設(shè)置了強(qiáng)制申明,則需要添加定義變量的語(yǔ)句),。 3.通過(guò)一個(gè)If……End If來(lái)判斷,,取得的文件名是否是空(如果為空,則說(shuō)明文件處理完畢),,如果為空,,則退出循環(huán)。 4.打開(kāi)取得的文件名對(duì)應(yīng)的文件 5.對(duì)數(shù)據(jù)進(jìn)行相應(yīng)處理(這里并沒(méi)有寫(xiě)這些語(yǔ)句,,實(shí)際使用時(shí)可根據(jù)自己的情況添加數(shù)據(jù)處理的語(yǔ)句) 6.關(guān)閉剛打開(kāi)的文件 7.刪除已經(jīng)處理過(guò)數(shù)據(jù)的文件(如果這些數(shù)據(jù)還有他用,,建議將其備份,在打開(kāi)文件后,,使用SaveAS另存為也可,。 8.過(guò)程結(jié)束。 如何查看Dir()函數(shù)更加詳細(xì)的說(shuō)明,,可直接在VBA編輯器中輸入Dir,,右鍵點(diǎn)擊Dir,然后在快捷菜單中選擇“定義”,,在打開(kāi)的“對(duì)象瀏覽器”中,,右鍵單擊Dir,然后選擇“幫助”,,即可查看Dir的詳細(xì)幫助及示例,。 VBA函數(shù)精選之十二(Dir函數(shù))第1.12例 Dir函數(shù) 一、題目: 要求編寫(xiě)一段代碼,,運(yùn)用Dir函數(shù)返回一個(gè)文件夾的文件列表,。 二、代碼: Sub 示例_1_12() Dim wjm wjm = Dir("C:\WINDOWS\WIN.ini") MsgBox wjm wjm = Dir("C:\WINDOWS\*.ini") wjm = Dir End Sub 三,、代碼詳解 1,、Sub 示例_1_12():宏程序的開(kāi)始語(yǔ)句。宏名為示例_1_12,。 2,、Dim wjm :變量wjm聲明為可變型數(shù)據(jù)類(lèi)型。 3,、wjm = Dir("C:\WINDOWS\WIN.ini") : 如果該文件存在則返回“WIN.INI”(在C:\Windows 文件夾中) ,,把返回的文件名賦給變量wjm 。如果該文件不存在則wjm=””,。 4,、wjm = Dir("C:\WINDOWS\*.ini") :第一次調(diào)用 Dir 函數(shù) 返回帶指定擴(kuò)展名的文件名。如果超過(guò)一個(gè) *.ini 文件存在,,函數(shù)將返回按條件第一個(gè)找到的文件名,。 5、wjm = Dir : 若第二次調(diào)用 Dir 函數(shù),,但不帶任何參數(shù),,則函數(shù)將返回同一目錄下的下一個(gè) *.ini 文件。 Dir函數(shù) 返回一個(gè)字符串 String,,用以表示一個(gè)文件名,、目錄名或文件夾名稱(chēng),它必須與指定的模式或文件屬性,、或磁盤(pán)卷標(biāo)相匹配,。 Dir[(pathname[, attributes])] Dir 函數(shù)的語(yǔ)法具有以下幾個(gè)部分: pathname 可選參數(shù)。用來(lái)指定文件名的字符串表達(dá)式,,可能包含目錄或文件夾,、以及驅(qū)動(dòng)器。如果沒(méi)有找到 pathname,,則會(huì)返回零長(zhǎng)度字符串 (""),。 attributes 可選參數(shù)。常數(shù)或數(shù)值表達(dá)式,,其總和用來(lái)指定文件屬性,。如果省略,則會(huì)返回匹配 pathname 但不包含屬性的文件,。 |
|
來(lái)自: 網(wǎng)海漫步 > 《辦公技巧》