iT邦幫忙

0

batch撈檔案,成效不彰

小弟需要從網路上的芳鄰裡海量的資料夾中找到我要的資料夾並將檔案co到我指定的目錄下,
前人都是用windows資料夾搜尋找,但因為公務機老舊搜尋很久,甚至有時候會跑半小時還找不到
所以想說用批次檔試看看會不會比較好,而且還省下我手動搬檔案的動作
以下是小弟的batch code,但因為資料量太多,測試後發現耗時太久
-----------------start---------------
@echo off
pushd \\server route
for /f %%i in ('dir D123* /ad /b /s') do (
xcopy %%i C:\test /s /d /y)
popd
pause
------------------------end----------------
請問我該怎麼解決這個效率上的問題阿,還是有能解決這問題的工具已經存在了呢?
還請各位先進不吝指導^^

CalvinKuo iT邦大師 7 級 ‧ 2013-05-21 14:37:18 檢舉
2011年以前還有下面這個可用,但是已經被Google大掃除掉了...
https://zh.wikipedia.org/wiki/Google%E6%A1%8C%E9%9D%A2

上網找找應該有人有備份檔,但是剛裝好編制索引時間會很久喔,另外還有權限問題要考慮。
CalvinKuo iT邦大師 7 級 ‧ 2013-05-21 17:05:15 檢舉
蟹老闆 iT邦大師 1 級 ‧ 2013-05-21 19:22:00 檢舉
換設備會不會改善呢?
或許也可以換設備加調整檔案編排方式就一勞逸了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

8
cojad
iT邦新手 3 級 ‧ 2013-05-22 12:03:25
最佳解答

1.要找的檔案是每次都不同嗎?
是-->問題2
否-->如果檔案室細碎的小型檔案,建議先在主機上,打包成一個檔案再傳出來會比較快(透過一些程式遠端遙控主機去打包你要的檔案)
2.要找的檔案會是近期才新增出來的檔案嗎?
否-->可以用dir/s > dir.txt建立完整的檔案清單, 這樣就可以不用慢慢地從網芳搜尋,然後找到要的檔案在批次拷貝出來
是-->如果是NTFS檔案系統可以考慮安裝Everything這套軟體,這套軟體是NTFS下搜尋檔案的強力助手,程式啟動後,搜尋任何NTFS檔案名稱都能在一秒內精確找完,且提供遠端操控並且下載檔案的功能

3.額外問題: 每次拷貝出的檔案數量大約多少? 檔案平均大小? 總檔案大小多少?

麻煩您先回答這幾個問題後, 我們大家才能有比較精確的方向討論最佳做法。

小成 iT邦高手 10 級 ‧ 2013-05-22 17:26:13 檢舉

用 Everything 是個好方法
我這邊的應用是我會開啟 Everything 的網頁伺服器,並設定密碼,讓有需求的人可以登錄網頁去查詢。然後因為只是要查詢位置,所以我會關閉直接從網頁上連結到檔案。

8
海綿寶寶
iT邦大神 1 級 ‧ 2013-05-21 15:25:23

你是要複製整個目錄底下的檔案
而不是找到少數特定的檔案

這種 full copy 的做法
再快的硬碟也沒辦法快

你可以考慮使用備份的軟體
第一次設定所有的目錄─「完整備份」
第二次以後就進行「差異備份」
心血來潮時就「完整備份」

如此可能會較有效率

看更多先前的回應...收起先前的回應...
CalvinKuo iT邦大師 7 級 ‧ 2013-05-21 15:57:25 檢舉

海綿大提到備份,我想到Robocopy,不知道會不會比批次檔速度快。
http://technet.microsoft.com/zh-tw/magazine/2006.11.utilityspotlight.aspx
http://www.wretch.cc/blog/dsa7410/9334589

esc902 iT邦新手 5 級 ‧ 2013-05-21 16:05:14 檢舉

海棉大好,其實我不是要做備份,我是要在一堆資料夾中,找到某個資料夾並將該資料夾copy出來,
不是routine job,是on demand job
是因為資料夾太多每次要搜尋耗時太久,職員才請我支援解決方案

了解

如此情境,我就幫不上忙了
臉紅

試試看先用dir > dir.txt 之類的方式產生文字檔,
再搜尋文字檔內的內容,再去copy.

Jesse HO iT邦好手 1 級 ‧ 2013-05-22 00:21:54 檢舉
  1. 試試改用 robocopy
    robocopy driver: \\svr\path filename

  2. dir 先產生清單之後再去作複製目標檔案

  3. 先把搜尋出來的檔案先複製"遠端"一資料夾, 之後再取回"本地"端

我要發表回答

立即登入回答