返回列表 上一主題 發帖

[分享] 使用〔命令列 CMD〕的 DOS/Dir 指令取出檔案明細到EXCEL

[分享] 使用〔命令列 CMD〕的 DOS/Dir 指令取出檔案明細到EXCEL

本帖最後由 准提部林 於 2015-9-14 15:30 編輯

使用〔命令列.CMD〕的 DOS / Dir 指令取出檔案明細到EXCEL 

看到這題16樓.ikboy 大大的疑問:
[發問]多層資料夾尋找檔案的問題
http://forum.twbts.com/viewthrea ... a=pageD1&page=2
 

尚未去搜尋網上是否有這個VBA範例,先做個樣板試試,
本來想說應很簡單,執行卻時可時不可,修修改改如下,
若有更好修正版本,歡迎不吝提供! 

_不是專行,寫起來就是跌跌撞撞。
  1. Sub 取出檔案明細()
  2. Dim UF$, UP$, UT$, xD, FF, TRow, N&, j&, Brr, TT
  3. Call 清除
  4. UF = [A1].Value: If UF = "" Then Exit Sub '搜尋檔案名稱
  5. UP = ThisWorkbook.Path & "\" '搜尋路徑
  6. UT = UP & "UT_File.txt" '檔案明細文字檔檔名
  7.  
  8. '↓若文字檔還存在,刪除
  9. On Error Resume Next: Kill UT: On Error GoTo 0
  10. '↓以〔命令列〕DIR指令產生檔案明細文字檔
  11. Shell "cmd.exe /c dir """ & UP & UF & """ /s /b > " & UT, vbHide
  12. '↓以DIR檢測是否可以抓到文字檔(檔案可能尚未就緒)
  13. Do Until Dir(UT) <> "": Loop
  14. '↓檢測文字檔是否還在寫入中,否則開啟時只是空白資料
  15. Do Until CheckBookOpen(UT) = 0: Loop
  16.  
  17. '↓將文字檔內容逐筆納入〔字典檔〕
  18. Set xD = CreateObject("Scripting.Dictionary")
  19. FF = FreeFile
  20. Open UT For Input Access Read As #FF
  21. While Not EOF(1)
  22.   Line Input #FF, TRow
  23.   N = N + 1: xD(N) = TRow
  24. Wend
  25. Close #FF
  26. If N = 0 Then MsgBox "找不到檔案! ": Exit Sub
  27.  
  28. '↓將字典檔內容拆出〔檔案名稱.完整路徑〕納入陣列
  29. ReDim Brr(N - 1, 1): N = 0
  30. For Each FF In xD.items
  31.   If FF <> ThisWorkbook.FullName Then
  32.    TT = InStrRev(FF, "\")
  33.    Brr(N, 0) = Mid(FF, TT + 1)
  34.    Brr(N, 1) = FF
  35.    N = N + 1
  36.   End If
  37. Next
  38.  
  39. [A4:B4].Resize(N) = Brr '填入資料
  40. Kill UT '刪去文字檔
  41. End Sub
複製代碼
附件下載:
20150912a01(DOS-Dir取檔案明細).rar (13.47 KB)

注意:儘量不要在〔根目錄〕中執行,也儘量不要使用〔*.*〕去搜檔案,(量可能太大)∼∼
 
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

本帖最後由 准提部林 於 2015-9-12 20:15 編輯

回復 4# 老夏


謝謝大大的參與!
 
請參考此題:
多層資料夾尋找檔案的問題
http://forum.twbts.com/thread-11369-1-1.html

假設有一個檔案,只知道存在某個〔資料夾〕中,但不知是放在哪個〔子資料夾〕,
而〔子資料夾〕中又有〔子資料夾〕,〔層數〕也不確定,如何快速找到這個檔案並〔自動開啟〕它?

那帖已有幾位大大提供正規又有效的方法,
此帖是另類方法,純參考,並非最好方案!
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 6# ML089


寫程式就是怕使用版本不同而發生不能作用,專業高手可以用Version判斷而區別語法,對只有舊版本者,似乎就綁手!
本來 FileSearch 就很好用,不知為何在較高版本微軟反而廢掉了?
DIR 或 FSO,要搜包含〔子資料夾〕檔案,對VBA新手確是有難度,好在網上已有眾多高手提供現成語去可套用!

使用 cmd 取出〔所有檔案〕明細,是練〔外丹功〕,可能太硬解!

謝謝版主提供珍貴的訊息!
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 7# yoyobuy


換個角度,可以這樣說嗎? 「我們都被〔微軟〕的作業平台綁住了!」
微軟與硬體廠商結盟,PC出廠就已灌好最新的系統,用不用呢?
又,以OFFICE為例,新舊版的所謂〔相容性〕,根本是騙人的,與〔相溶性〕相差太遠;
其目的就是要賺錢,要您一直花錢更新,但這是企業的本性,
使用者可發非難之辭,但也無可奈何!

目前還只用較舊版的系統及應用程式,
但遇到與廠商及客戶的〔資料檔案〕交換,因版本不同,可能造成雙方的困擾,
所以,早晚還是要去升級的。
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題