請問一個大量移動目錄及檔案的問題

實在是想不到有什麼比較有效率的方法..
感覺用批次檔的方式可能辦得到..但不會寫...

例如有一個目錄下的檔案與結構是這樣..
X:\201205\aaaa\aaaa\檔案1.txt
...
X:\201205\aaaa\aaaa\檔案10.txt

X:\201205\bbbb\bbbb\檔案1.txt
...
X:\201205\bbbb\bbbb\檔案10.txt

可以看到上面的目錄裡又多了一層同名的目錄
所以我想改成
X:\201205\aaaa\檔案1.txt
...
X:\201205\aaaa\檔案10.txt

X:\201205\bbbb\檔案1.txt
...
X:\201205\bbbb\檔案10.txt

當只有一兩個目錄是這樣的話我自己手動移動就好了
可是若有好幾十個甚至快上百個的話用手動根本會死人..

所以想請問有沒有高手可以教一下該怎麼做比較好?
若可以用批次檔的方式該怎麼寫?
或者是有現成功能的工具可以做到?
萬分感激..
2012-06-05 20:18 發佈

Stranger2105 wrote:
實在是想不到有什麼比...(恕刪)


dir "x:\xxx" > 檔名.txt ;列出檔名轉存 檔名.txt 編輯批次檔用
move 檔名.副檔名 "x:\xxx" ;移動檔案類似剪下貼上

"x:\xxx" 加雙引號為長資料夾名稱用

simonni wrote:
dir "x:\xx...(恕刪)


謝謝
您這用法我有嘗試過
不過一開始忘了提到
目錄及檔案名稱是有中文、英文、日文甚至有特殊符號夾雜的
所以這樣使用的話除了英數部分都會變成亂碼..

不曉得有沒有軟體或是直接用命令提示字元的方式能正確導出有中英日和特殊符號的名稱..
只要能做出正確的列表應該就能解決了吧..

Stranger2105 wrote:
謝謝您這用法我有嘗試...(恕刪)


UltraEdit 文書編輯軟體可使用 DOS 命令

選單->進階->DOS 命令

命令:dir ;可以顯示完整路徑
來源 X:\201205\aaaa\aaaa\*.*
目地 X:\201205\aaaa\*.*

來源 X:\201205\bbbb\bbbb\*.*
目地 X:\201205\bbbb\*.*


條件1: 父.子的資料夾名稱相同
修件2: 把子目錄的檔案全部往上層父目錄塞
如果依照您的需求如上2條件的話

1.請把底下指令存成 .bat
2.需存放在 "X:\201205"
3.請自建測試目錄try it!, 測試無誤再上
4.XP測試正常

rem ==========程式開始
rem 定義啟始目錄
set HOOME=%cd%
rem 搬檔
FOR /F %%i IN ('dir/ad/b') DO move "%HOOME%\%%i\%%i\*.*" "%HOOOME%\%%i\."
rem 砍掉 aaaa 下面的 aaaa 資料夾
FOR /F %%i IN ('dir/ad/b') DO rd "%HOOME%\%%i\%%i"
rem ==========程式結束

wslihm1 wrote:
(恕刪)
條件1: 父.子的資料夾名稱相同
修件2: 把子目錄的檔案全部往上層父目錄塞
如果依照您的需求如上2條件的話

1.請把底下指令存成 .bat
2.需存放在 "X:\201205"
3.請自建測試目錄try it!, 測試無誤再上
4.XP測試正常

rem ==========程式開始
rem 定義啟始目錄
set HOOME=%cd%
rem 搬檔
FOR /F %%i IN ('dir/ad/b') DO move "%HOOME%\%%i\%%i\*.*" "%HOOOME%\%%i\."
rem 砍掉 aaaa 下面的 aaaa 資料夾
FOR /F %%i IN ('dir/ad/b') DO rd "%HOOME%\%%i\%%i"
rem ==========程式結束(恕刪)


萬分感謝您的幫忙
搬擋 的後面程式碼 "%HOOOME% 多一個 O 了
不過這只是小事啦..

經測試後目錄有 中文、英文、數字、標準符號 ( 如 +-=_ ) 這些夾雜都可以正確無誤的搬移
但如果有 日文、韓文 就會失敗了(系統會回:檔案名稱、目錄名稱或磁碟區標籤語法錯誤

另外不曉得能不能寫成多層迴圈來判斷呢?
因為我發現有小部分的子目錄名稱會跟上層的父目錄名稱不一樣
我批次檔的 for 迴圈完全不知道怎麼寫....

我的系統是 Win7
用檔案搜尋就可以了
檔案搜尋資料夾"201205"
接著排序用"資料夾"排序
就可以直接選到綠色的那一層資料夾了
Stranger2105 wrote:
萬分感謝您的幫忙搬擋...(恕刪)


小弟能力也僅如此而己


經測試後目錄有 中文、英文、數字、標準符號 ( 如 +-=_ ) 這些夾雜都可以正確無誤的搬移
但如果有 日文、韓文 就會失敗了(系統會回:檔案名稱、目錄名稱或磁碟區標籤語法錯誤)


畢竟是DOS ASCII編碼, 長檔名或雙byte字型, 也要靠M$的支援
硬要做的話, 系統改個語系應該就沒問題了
除了DOS shell以外應該都可以支援2byte字串


move 原檔名 新檔名(使用英文流水號)

如果是長期要做的話, 這樣應該是比較完善的做法
不用再擔心某人開不了檔或無法處理該檔案
(如果檔案是要透過交換分享的話)

比較麻煩的就是要看參照檔才知道搬完後的 A001.abc 原來叫啥檔名


另外不曉得能不能寫成多層迴圈來判斷呢?
因為我發現有小部分的子目錄名稱會跟上層的父目錄名稱不一樣
我批次檔的 for 迴圈完全不知道怎麼寫....


用DOS寫遞回!!!
這交給樓下的高手發揮了

XD使者 wrote:
用檔案搜尋就可以了
檔案搜尋資料夾"201205"
接著排序用"資料夾"排序
就可以直接選到綠色的那一層資料夾了


原來還有這個方法!
測試了一下後好像真的可行耶!
只是得要靠人力手動沒辦法讓電腦自己去跑...(我承認我比較懶
感謝您 這方法我學起來了~ ^^

wslihm1 wrote:
小弟能力也僅如此而己...(恕刪)


哈哈 別這麼說
您的方法也幫了我很大的忙
至少大部分的檔案都可以成功的讓電腦自動搬移(我真的很懶..
剩下小部分的我就參考樓上 XD使者 大的手動搬移的方式暫時來解決吧

感謝二位
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?