小弟最近遇到兩件案子,
需求一樣,
就是有上萬個檔案 (容量1X~5XG),
要從裡面篩選出指定條件的檔案,
複製到指定資料夾內,
如果有重複的就用比較新的檔案覆蓋舊的檔案,
篩選條件有上千個,
只要符合的就篩選出來,
因為使用者想用 Excel (輸入篩選條件會比較好用),
所以剛開始小弟是用,VBA 產生 bat 檔去搜尋資料夾,
用 for 迴圈 + copy 指令,
可是太慢了=口=...
重點是,會當機,根本不能使用。
直接用VBA去搜尋也會當掉,
從網路下載的一些用來搜尋的軟體也會當掉...
ㄜ~~請問有前輩遇過這種需求嗎?
大量條件搜尋大量檔案的方法???
q00153提到:
上萬個檔案 (容量1X~5XG)
FOR /R C:\ %%f IN (TOKYO*.MP4) DO COPY %%f D:\LOGDATA FOR /R E:\ %%f IN (*HOT.AVI) DO COPY %%f D:\LOGDATA
q00153提到:
一個早上(4HR)之內,有可能嗎?
@Echo Off Set Files=1.csv Set Target=.\test\ If Not Exist %Target% Md %Target% Echo 開始時間 %Time% > Timer.txt For /f "Delims=, Tokens=1-26" %%a In ('Type %Files%') Do ( For /f %%a In ('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
q00153提到:
請問有前輩遇過這種需求嗎?
大量條件搜尋大量檔案的方法???
有。用 Linux 的 find,快又有效。
http://sourceforge.net/projects/unxutils/files/unxutils/current/UnxUtils.zip/download
因為你沒給條件例子,所以我也給不出範例,自己琢磨囉
你的問題不是很明瞭,假設是要從D主機copy到E主機,或者是要從D資料夾copy到E資料夾,而且包含所屬的所有子資料夾,這一些資料夾以及檔案裡面全部包含了600萬個檔案,可以簡單的做
Xcopy d:\*.* e:\ /o/s/e/d/c/y
或是 xcopy D:\abc\*.* D:\xyz\ /o/s/e/d/c/y
或是 xcopy d:\abc\*.* \\192.168.1.xx\xyz\ /o/s/e/d/c/y
試試看吧,另外 如果不介意裝個軟體的話 ,請找微軟出的 robocopy 也可以做到一樣的效果
下面這個也不錯用(Vista/2003以上作業系統)
Forfiles
cmd forfiles 從文件夾或樹中選擇要進行批處理的文件(方便批量刪除n天前的文件)
要不要考慮用 grepWin , 搜尋速度很快。而且支援 regex 要做單純的或者複雜搜尋都沒問題。只是前提要是 文字類型檔案。