請教大量條件搜尋大量檔案的方法? - iT 邦幫忙
文章推薦指數: 80 %
就是有上萬個檔案(容量1X~5XG), 要從裡面篩選出指定條件的檔案, 複製到指定資料夾內, ... 所以剛開始小弟是用,VBA 產生bat 檔去搜尋資料夾,
1
請教大量條件搜尋大量檔案的方法?
程式設計
q00153
2016-01-0410:57:13‧12319瀏覽
小弟最近遇到兩件案子,
需求一樣,
就是有上萬個檔案(容量1X~5XG),
要從裡面篩選出指定條件的檔案,
複製到指定資料夾內,
如果有重複的就用比較新的檔案覆蓋舊的檔案,
篩選條件有上千個,
只要符合的就篩選出來,
因為使用者想用Excel(輸入篩選條件會比較好用),
所以剛開始小弟是用,VBA產生bat檔去搜尋資料夾,
用for迴圈+copy指令,
可是太慢了=口=...
重點是,會當機,根本不能使用。
直接用VBA去搜尋也會當掉,
從網路下載的一些用來搜尋的軟體也會當掉...
ㄜ~~請問有前輩遇過這種需求嗎?
大量條件搜尋大量檔案的方法???
回答3
討論22
邀請回答
追蹤
檢舉
×
邀請回答
輸入邀請回答者的帳號或暱稱
Loading
找不到結果。
已達邀請上限
邀請回答
{{result.user.nickname}}
{{result.user.account}}
已邀請的邦友{{invite_list.length}}/5
取消邀請
{{invite.nickname}}
{{invite.account}}
關閉
看更多先前的討論...收起先前的討論...
aeolus0829
iT邦研究生4級‧
2016-01-0411:28:15
檢舉
不清楚你所謂的'符合特定條件'是什麼樣的條件?可否舉具體的例子?
比如說某種副檔名、某個日期
我會選擇用cygwin撘配批次檔做這件事
(VBA還要開一個office實體在那邊,一是效能不彰,二是殺雞用牛刀)
不清楚你所謂的'符合特定條件'是什麼樣的條件?可否舉具體的例子?
比如說某種副檔名、某個日期
我會選擇用cygwin撘配批次檔做這件事
(VBA還要開一個office實體在那邊,一是效能不彰,二是殺雞用牛刀)
修改
fillano
iT邦超人1級‧
2016-01-0411:44:33
檢舉
另外一個要問的是:什麼檔?(純文字?程式?圖檔?Excel?Word?)如果你要搜尋的是「檔案內容」的話...
另外一個要問的是:什麼檔?(純文字?程式?圖檔?Excel?Word?)如果你要搜尋的是「檔案內容」的話...
修改
q00153
iT邦新手3級‧
2016-01-0411:46:54
檢舉
符合特定條件==>是指部份檔名或副檔名,由使用者自行設定。
還要開一個office是因為使用者想要用Excel來設定條件,
所以想說用VBA讀取Excel內設定的條件產生搜尋檔案的程式碼,
再執行該程式,來搜尋檔案。
目前是產生相關的bat檔,可是效率不彰。
符合特定條件==>是指部份檔名或副檔名,由使用者自行設定。
還要開一個office是因為使用者想要用Excel來設定條件,
所以想說用VBA讀取Excel內設定的條件產生搜尋檔案的程式碼,
再執行該程式,來搜尋檔案。
目前是產生相關的bat檔,可是效率不彰。
修改
q00153
iT邦新手3級‧
2016-01-0411:49:30
檢舉
回大大~不用搜尋檔案內容,
只要能搜尋檔案名稱就可以了,
問題是路徑不固定,所以要檔案無論放多深都找的到~
找到檔案後複製到指定的資料夾蒐集起來,不用複製目錄結構,只要該檔案就好,
搜尋的檔案類型不指定,不過以文字跟圖片檔居多~
回大大~不用搜尋檔案內容,
只要能搜尋檔案名稱就可以了,
問題是路徑不固定,所以要檔案無論放多深都找的到~
找到檔案後複製到指定的資料夾蒐集起來,不用複製目錄結構,只要該檔案就好,
搜尋的檔案類型不指定,不過以文字跟圖片檔居多~
修改
蟹老闆
iT邦大師1級‧
2016-01-0412:29:37
檢舉
肯定快不了
N千*近萬怎麼快得了
肯定快不了
N千*近萬怎麼快得了
修改
fillano
iT邦超人1級‧
2016-01-0413:59:14
檢舉
建議的做法:分階段,每一階段用不同程式處理
1.掃出所有檔案,將路徑、檔名、日期等資料存在一個資料檔(資料庫、文字檔、xml、json等都可以,看你習慣處理的格式)
2.根據篩選條件,篩選過上述資訊,再產生一個資料檔
3.根據需要的條件,去除上述資料檔中重複的資料,再產生一個資料檔
4.根據前一步驟的資料檔,產出複製檔案的batch
5.執行batch檔來把檔案複製到目標
建議的做法:分階段,每一階段用不同程式處理
1.掃出所有檔案,將路徑、檔名、日期等資料存在一個資料檔(資料庫、文字檔、xml、json等都可以,看你習慣處理的格式)
2.根據篩選條件,篩選過上述資訊,再產生一個資料檔
3.根據需要的條件,去除上述資料檔中重複的資料,再產生一個資料檔
4.根據前一步驟的資料檔,產出複製檔案的batch
5.執行batch檔來把檔案複製到目標
修改
海綿寶寶
iT邦大神1級‧
2016-01-0414:33:55
檢舉
q00153提到:上萬個檔案(容量1X~5XG)
Windows的檔案總管不合用嗎
q00153提到:上萬個檔案(容量1X~5XG)Windows的檔案總管不合用嗎
不過以前學校學過C/C++, 雖然他是很快的程式語言, 印象中會被中文路徑搞死
不過以前學校學過C/C++, 雖然他是很快的程式語言, 印象中會被中文路徑搞死
我會使用script來做,主要是因為不需要編譯,比較順手... 至於第一步驟的檔案清單,用dir/s/b就可以(不過如果要日期的話,還需要其他欄位,這樣用dir不太容易跑出程式容易處理的清單,也許可以考慮改個方法,先根據日期外的條件過濾,然後才根據清單去找出日期來過濾) 我是用node.js...不過建議你還是用你比較熟悉的程式語言/工具來做。
我會使用script來做,主要是因為不需要編譯,比較順手... 至於第一步驟的檔案清單,用dir/s/b就可以(不過如果要日期的話,還需要其他欄位,這樣用dir不太容易跑出程式容易處理的清單,也許可以考慮改個方法,先根據日期外的條件過濾,然後才根據清單去找出日期來過濾) 修改 weiclin iT邦高手4級‧ 2016-01-0416:17:29 檢舉 +1 只有上萬個檔名而已.. 先把檔名整理成一個列表再搜尋,根本小菜一碟 +1 只有上萬個檔名而已.. 先把檔名整理成一個列表再搜尋,根本小菜一碟 修改 蟹老闆 iT邦大師1級‧ 2016-01-0417:35:24 檢舉 q00153提到:一個早上(4HR)之內,有可能嗎? 四小時太多了,一個小時以內應該是OK的
q00153提到:一個早上(4HR)之內,有可能嗎?四小時太多了,一個小時以內應該是OK的 修改 小成 iT邦高手10級‧ 2016-01-0508:13:13 檢舉 推一下蒐尋軟體,everything https://www.voidtools.com/ 推一下蒐尋軟體,everything https://www.voidtools.com/ 修改 小成 iT邦高手10級‧ 2016-01-0508:14:42 檢舉 喔,我看到條件有上千個了,我原本以為只有檔案很多,條件不多... 喔,我看到條件有上千個了,我原本以為只有檔案很多,條件不多... 修改 newkevin iT邦高手1級‧ 2016-01-0518:16:56 檢舉 前題 檔案檔名不會增加 這樣才可能吧 應該每天增加的檔名也要+進去吧 前題 檔案檔名不會增加 這樣才可能吧 應該每天增加的檔名也要+進去吧 修改 蟹老闆 iT邦大師1級‧ 2016-01-0523:57:15 檢舉 試試看吧! 因為forfiles一次只能搜尋單一條件,所以還是用DIR來進行多條件的效率搜尋應該比較好,本想用FORFILES搭FOR來做檔名與附檔名的條件,但因FORFILES搭FOR不好使,所以只提供了不限附檔名的範例,如還是需要考慮副檔名,可以將%%?.*換成%%?.jpg或其它,也可以將%%?.*換成%%?如果換成%%?的話必須在條件資料檔中包含副檔名. @EchoOff SetFiles=1.csv SetTarget=.\test\ IfNotExist%Target%Md%Target% Echo開始時間%Time%>Timer.txt For/f"Delims=,Tokens=1-26"%%aIn('Type%Files%')Do( For/f%%aIn('Dir/b/s%%a.*%%b.*%%c.*%%d.*%%e.*%%f.*%%g.*%%h.*%%i.*%%j.*%%k.*%%l.*%%m.*%%n.*%%o.*%%p.*%%q.*%%q.*%%r.*%%s.*%%t.*%%u.*%%v.*%%w.*%%x.*%%y%%z.*')Do( Echo正在處理%%a Xcopy/c/d/y"%%a""%Target%")) Echo結束時間%Time%>>Timer.txt 這個批次檔須放在要搜尋的目錄最上層,另外會產生一個TEST的資料夾,這裡是要放要複製的檔案 要注意的是條件檔需放在與批次檔同一個目錄中,且需是.CSV格式的檔案,每一列最多只能26個(欄)條件,不到26個也可以,但會增加搜尋的時間 可以修改 Files=1.csv為自訂的名稱 Target=.\test\為目標位置 更正預估的時間,因為都小檔,所需的時間可能會更久,但也不至於四個小時..... 試試看吧! 因為forfiles一次只能搜尋單一條件,所以還是用DIR來進行多條件的效率搜尋應該比較好,本想用FORFILES搭FOR來做檔名與附檔名的條件,但因FORFILES搭FOR不好使,所以只提供了不限附檔名的範例,如還是需要考慮副檔名,可以將%%?.*換成%%?.jpg或其它,也可以將%%?.*換成%%?如果換成%%?的話必須在條件資料檔中包含副檔名.
jones888提到:他只有上萬個,是會需要多久啊還要考慮檔案COPY的時間 修改 蟹老闆 iT邦大師1級‧ 2016-01-0613:19:52 檢舉 Dir /b /s 要改為dir/b/s/a-d
Dir /b /s
要改為dir/b/s/a-d
修改 登入發表討論 3個回答 舊至新 新至舊 最高Like數 8 wiseguy iT邦超人1級‧2016-01-0522:07:49 最佳解答 q00153提到: 請問有前輩遇過這種需求嗎? 大量條件搜尋大量檔案的方法??? 有。用Linux的find,快又有效。
http://sourceforge.net/projects/unxutils/files/unxutils/current/UnxUtils.zip/download 因為你沒給條件例子,所以我也給不出範例,自己琢磨囉 回應 分享 檢舉 登入發表回應 6 shilong_chang iT邦新手5級‧2016-01-0417:33:01 你的問題不是很明瞭,假設是要從D主機copy到E主機,或者是要從D資料夾copy到E資料夾,而且包含所屬的所有子資料夾,這一些資料夾以及檔案裡面全部包含了600萬個檔案,可以簡單的做 Xcopyd:\*.*e:\/o/s/e/d/c/y 或是xcopyD:\abc\*.*D:\xyz\/o/s/e/d/c/y 或是xcopyd:\abc\*.*\\192.168.1.xx\xyz\/o/s/e/d/c/y 試試看吧,另外如果不介意裝個軟體的話,請找微軟出的robocopy也可以做到一樣的效果 回應 1 分享 檢舉 CalvinKuo iT邦大師7級‧ 2016-01-0418:03:59 檢舉 下面這個也不錯用(Vista/2003以上作業系統) Forfiles cmdforfiles從文件夾或樹中選擇要進行批處理的文件(方便批量刪除n天前的文件) 下面這個也不錯用(Vista/2003以上作業系統) [Forfiles](https://technet.microsoft.com/zh-tw/library/cc753551%28v=ws.10%29.aspx) [cmdforfiles從文件夾或樹中選擇要進行批處理的文件(方便批量刪除n天前的文件)](http://codex.wiki/post/111773-355) 修改 登入發表回應 0 haoming iT邦好手1級‧2016-01-0716:06:01 要不要考慮用grepWin,搜尋速度很快。
而且支援regex要做單純的或者複雜搜尋都沒問題。
只是前提要是文字類型檔案。
回應 1 分享 檢舉 wiseguy iT邦超人1級‧ 2016-01-0717:49:25 檢舉 q00153提到: 不用搜尋檔案內容,要能搜尋檔案名稱就可以了, 發問者只要找檔名,應該是用不到grep這麼強大的武器。
>**q00153**提到: >不用搜尋檔案內容,要能搜尋檔案名稱就可以了, 發問者只要找檔名,應該是用不到grep這麼強大的武器。
修改 登入發表回應 我要發表回答 立即登入回答 相關問題 [Ruby]Ruby要怎麼樣才能使用windows命令列裡的指令呢? 請問JAVA語言都用什麼方式寫報表程式? 非Windows的程式設計該用那一套!? C#疑問 私立大學讀商學院,畢業後想至資策會上6個月期密集程式設計班,未來計劃朝軟體或MIS發展,可否請大家給個意見參考? 寫程式與離散數學的關係 大學四年過去了,我該怎麼走下一步? 想要學手機APP程式設計 網站線上刷卡串連報價 請問關於JavaScript呼叫Function時,有括弧與無括弧的差異 iT邦幫忙鐵人賽 參賽組數 1087組 團體組數 52組 累計文章數 20455篇 完賽人數 572人 鐵人賽最新文章 DevFest'21Hsinchu&Taichung議程錄影上線啦! 建立第一個單元測試(golang)-2(Day21) 更新網格交易機器人 STM32的開發生態,Cube、HAL庫、LL庫 閒聊STM32CubeMX和STM32CubeIDE 建立第一個單元測試(golang)-1(Day20) Day38-在AWSLambda中使用YOLO推估(Inference) Day37-在AWSLambda建立OpenCVLayer Day36-使用Container建立AmazonSageMaker端點 Day35-AmazonSageMaker簡介 前往鐵人賽 技術推廣專區 [Day2]抓取每日收盤價 [Day1]基本工具安裝 利用python取得永豐銀行API的Nonce [Day03]tinyML開發板介紹 永豐金融API測試員 [Day01]在享受tinyML這道美食之前 [Day3]使用ta-lib製作指標 [Day4]函數打包與買進持有報酬率試算 計算API所需要的參數:HashID 計算API所需要的參數:IV 前往鐵人賽 熱門問題 入門軟體工程師一些術語 想用網路線達到KVM的效果??? Chrome暗黑模式,CSS的媒體選擇器 系統工程師的sideproject ASP.NET發行網站IIS架站連接資料庫發生錯誤【於資料庫'master'中,CREATEDATABASE的權限遭拒】 解析郵件附檔 考研究所需有關的資安題目 pdf多頁轉成ppt單頁 一台電腦可否同時安裝Win7和Win10作業系統嗎? 跪求SQL大神 IT邦幫忙 站方公告 2021iThome鐵人賽精彩文章超過2萬篇,預計12月揭曉本屆獲勝鐵人 熱門tag 看更多 13th鐵人賽 12th鐵人賽 11th鐵人賽 鐵人賽 2019鐵人賽 2018鐵人賽 javascript 2017鐵人賽 windows php python windowsserver linux c# 程式設計 資訊安全 css vue.js sql 分享 熱門回答 入門軟體工程師一些術語 MySQLselect後刪除問題 如何用pyhton在網頁中呈現可互動的資料視覺化圖形 想用網路線達到KVM的效果??? 解析郵件附檔 ASP.NET發行網站IIS架站連接資料庫發生錯誤【於資料庫'master'中,CREATEDATABASE的權限遭拒】 pdf多頁轉成ppt單頁 請問用VM架FTP.如何讓外網連入(NAT&映射) linux常用服務架設 一台電腦可否同時安裝Win7和Win10作業系統嗎? 熱門文章 桃園機場公司徵求資訊夥伴,邀請您一起加入我們的團隊! 建立第一個單元測試(golang)-2(Day21) DevFest'21Hsinchu&Taichung議程錄影上線啦! 我的讀書方法 ITCertificationsExamPreparation Python&SQLALchemy學習筆記_查詢 如何免費將PDF拆分為多個文件 HTML筆記(00)-為什麼我會想學網頁開發? 為了轉生而點技能,難題紀錄(一)Hoisting篇。
[SAP][PP]計劃單轉工單_BOM問題? 一週點數排行 更多點數排行 海綿寶寶(antijava) ㊣浩瀚星空㊣(yoching) raytracy(raytracy) japhenchen(japhenchen) ccenjor(ccenjor) fillano(fillano) 一級屠豬士(hitomitanaka) juck30808(juck30808) chun8106(chun8106) souda(souda) × At 輸入對方的帳號或暱稱 Loading 找不到結果。
標記 {{result.label}} {{result.account}} 關閉
延伸文章資訊
- 1如何一次搜尋多個檔案?Search Text in Files 檔案內容搜尋軟體 ...
限時免費Search Text in Files 2.1 在眾多文件中找到特定文字,編寫那麼多的文件檔案,文書檔案累積越來越多,大家一定會有查詢檔案內容的經驗, ...
- 2[教學] 如何快速選取多重資料夾中特定類型的檔案?
但如果這個「照片」資料夾中分門別類、有好多資料夾的話,有辦法一次把照片全部都 ... 按下搜尋之後你將會發現:資料夾與裡頭的檔案很快且巧妙分離開來,變成兩邊不同 ...
- 3【一次搜尋多個檔案】標籤資訊整理 - 哇哇3C日誌
一次搜尋多個檔案,FileSeek 免費快速檔案內容搜尋軟體,不需索引、支援特殊檔案,我自己目前習慣使用的兩個檔案搜尋工具分別是:「Everything」 ... 加上多個不同資料夾 ...
- 4電腦如何搜尋多個關鍵字詞_同時搜尋多個關鍵詞的方法
電腦搜尋多個關鍵字詞方法一:XP系統 · 1、直接雙擊“我的電腦”,然後單擊上面的搜尋按鈕或者點選“開始”---“搜尋”; · 2、選擇搜尋檔案型別; · 3、輸入搜尋檔名稱,當搜尋多個 ...
- 5Windows7以後版本的檔案總管如何用多條件搜尋 - 彰化一整天 ...
在做電腦軟體丙級的檔案管理部分,有一個題目要您將二個檔案類型的檔案複製到某一個資料夾,看書是在搜尋時在二個條件中加入OR就可以,OR要大寫才會有 ...